C♯相談室 Part18

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:04/11/12 19:47:55
お前ら釣られすぎですよ
953デフォルトの名無しさん:04/11/13 01:51:54
ボタンがフォーカスを受け取らないようにするにはどうしたらいいでしょうか?
CanFocusプロパティは読み取り専用で設定できないようなので・・。
何か方法がありましたら教えて下さい。
954デフォルトの名無しさん:04/11/13 03:37:54
Enabled を false にする
955デフォルトの名無しさん:04/11/13 13:36:54
>>954
レスありがとうございます。
ボタンの機能はそのまま(クリックできる状態)で
クリックしてもフォーカスが移らないようにしたいのです。
ToolBarのボタンみたいな感じです。
DelphiのSpeedButtonのようなコントロールがあればいいのですが・・。
956デフォルトの名無しさん:04/11/13 13:51:13
WM_SETFOCUS を受け取った際に別のウィンドウに SetFocus するとかは?
957デフォルトの名無しさん:04/11/13 14:19:36
>>956
C#でWindowsメッセージを扱ったことがなかったので、
ためしにEnterイベントで同じことをやってみたら思い通りに出来ました。
ありがとうございました!
958デフォルトの名無しさん:04/11/13 17:10:57
フリーのPDF生成ライブラリにオススメはなにかありますか。
iText.NETはJ#ランタイムを入れなくてはならないらしくて、ちょっと躊躇中・・・
959デフォルトの名無しさん:04/11/13 18:51:35
メインメニューの項目のショートカットキー項目にスペースキーなどが無いのですが、
これを追加するにはどうしたらよいのでしょうか?
960デフォルトの名無しさん:04/11/14 01:47:50
>>959
ProcessCmdKey
961デフォルトの名無しさん:04/11/14 01:52:01
すいません。
>>883が紹介してくれましたやつで参考にさせていただきましたが
それぞれの環境でintarface nameをいちいち指定してあげなければいけないのは大変だなと思いまして
intarface nameを自動で取得したいのですが、どうやれば取得できるのかわかりません。
すみませんが、自動でintarface nameの取得の仕方をお教え願えませんでしょうか?
よろしくお願いします。
962デフォルトの名無しさん:04/11/14 01:55:37
すいません。
スペルミスです・・・。
×intarface
○interface
963デフォルトの名無しさん:04/11/14 02:03:20
>>961
自動で、と仰る意味がよくわかりませんが。
Type.GetInterface メソッドとか如何でしょう。
964デフォルトの名無しさん:04/11/14 09:42:47
>>961
はて、883のリンク先にinterface nameなんて用語出てこなかったが、インスタンス名のことでいいのかね。

GetInstanceNamesで取得したstring配列をチェックしてみれば大体傾向はつかめると思うんだが。
//ネットワークアダプタが複数ある可能性がある場合にどうするか、が問題だ。
965961:04/11/14 10:59:49
>>963-964
亜rが問うございます。

あら・・・・
申し訳ありません。IntarfaceNameじゃなくてInstanceNameでした・・。

GetInstanceNameで取得できました!!
ありがとうございます。

しかし、ネットワークアダプタが2つある場合はどうしたらよいでしょう・・・。
本当にこれが問題ですね。

ちょっと考えてみます。
966965:04/11/14 11:03:01
変換ミス・・・orz
ありがとうございます、でした・・・。
967デフォルトの名無しさん:04/11/14 11:34:19
/win32icon で設定したアプリケーションアイコンを
プログラム内から取得するには、どうすればいいんでしょうか?
968デフォルトの名無しさん:04/11/14 12:01:12
HashtableをReadonlyにするにはどうすればいいですか。
969デフォルトの名無しさん:04/11/14 14:35:17
>>968
中身一個一個をReadOnlyにしたいの?
全体をReadOnlyにしたいの?
970デフォルトの名無しさん:04/11/15 01:20:03
ArrayList.ReadOnly() のHashtable版みたいなものを言ってるんじゃないの?

このあたり、const参照/ポインタがあるC++なら何も考えなくていいんだけどな
971デフォルトの名無しさん:04/11/15 01:49:45
よくわからんがそれぐらい自分で作れ
972デフォルトの名無しさん:04/11/15 12:35:26
public class TextBoxEx : TextBox {
 public TextBoxEx() {
  this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint,true);
 }
}
ってことをしたいんだが、派生クラスをつくらないでunsafeな感じにアクセスすることってできないかな?
邪道?
973デフォルトの名無しさん:04/11/15 13:10:27
>>972
リフレクションを使えば可能だが、正直必然性が分からない。
邪道かと聞かれれば当然邪道。
974デフォルトの名無しさん:04/11/15 16:24:51
Label コントロールの TextAlign プロパティにて
MiddleCenter や BottomCenter などを指定しても
縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、
縦位置を中央や下寄せにするにはどうしたらよいのでしょうか?
975デフォルトの名無しさん:04/11/15 16:28:37
>>973
サンクスコ。
使うコントロールだけクラスを増やし、それにたいしてのアクセスのために
デザイナのコードとかいじらなくてはいけなくなるなぁとめんどうくさがっていました。
976デフォルトの名無しさん:04/11/15 19:37:40
Windowsコントロールでコンソールを再現したいのですが
どうしたらいいでしょう?
FormにTextBoxを貼り付けたものを試したのですが、
テキストを追加して最後の行までスクロールする事が
出来ませんでした。
カレットまでスクロールするメソッドがありますが、
テキストを追加するとカレットが消えてしまいます。
977デフォルトの名無しさん:04/11/15 20:22:00
Panelの境界線をFixedSingleの(凸凹してない)状態で、
さらに色を黒じゃなく別の色で表示したいけどやり方がわかないです。

3Dは嫌で、BorderStyleをNoneにしてPaintイベントでちまちまDrawLineとかやってみたけど、
パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。

なんかいい方法ないですかね??
978デフォルトの名無しさん:04/11/15 20:32:28
>>974
> 縦位置が中央寄せや、下寄せにならず常に上寄せになってしまうのですが、
私の所ではならないんだが。

>>976
SelectionStartプロパティでキャレットの位置は動かせる。

>>977
> パネルの上にさらにのってるパネルやコントロールのおかげで途中で途切れたりします。
極めて真っ当だと思うんだけど……?
途中での意味が今一よくわかんない。
979デフォルトの名無しさん:04/11/15 20:43:04
>>978

説明足りなかったす。

パネルやコントロールってののコントロールはとりあえずおいといて、
親パネルの上に貼った子パネルってのは透明の見えないパネル。
その子パネルの上に2つ3つコントロール配置して、親パネルのリサイズとかで子パネルを整列させてます。

なんで、親パネルにはボーダーがあって、その中をボーダーの無い
子パネルが親パネルのサイズによって配置替えしてる状態。

で、子パネルの背景色を透明にしてもみたけど、透明になってない部分があるのか、
部分的にボーダーが途切れちゃう箇所が出てくるわけなんですよ。

まだ解りづらいかな…日本語下手でスマソ
980976:04/11/15 20:49:44
>>978
助かりました、ありがとうございます!
981デフォルトの名無しさん:04/11/15 21:04:41
>>974
グリフ(文字の形)の下に、英文字のgやyのために日本語文字だけで考えると余分な空白が
付いているのを「上寄せになっている」と勘違いしていたりはしませんか?
982974:04/11/15 21:11:47
>>978
いろいろ調べたんですが FlatStyle.System にしてあると
TextAlign が無視されるようです。MSDN によると、

NET Framework Version 1.1 の場合、 FlatStyle プロパティに
FlatStyle.System を設定しても、 TextAlign プロパティの値が
無視されることはありません。

とあるんですが、うちは .NET Framework 1.1 なのですが
FlatStyle を System にすると必ず上寄せになってしまいます。

このあたり、何か御存知の方いらっしゃいませんでしょうか?

アドバイスよろしくお願いします。
983デフォルトの名無しさん:04/11/15 23:01:47
>>967
WIN32 APIにそれらしきものがあった。
984デフォルトの名無しさん:04/11/15 23:30:20
>>983
なんというAPIでしょうか?
985デフォルトの名無しさん:04/11/15 23:38:47
>>984
LoadImageだな。
ただし、/win32iconじゃなくて
.rcファイルをrc.exe(リソースコンパイラ)でコンパイルした.resファイルを/win32resで加えてそっちを参照する。
ちなみに.resは/win32iconも兼ねることができるから。
986デフォルトの名無しさん:04/11/16 01:26:17
>>982
.NET 1.1 入れてあるけど、使ってるのは 1.0 って落ち?
例えば VC# 2002 とか。
987974:04/11/16 09:40:24
>>986
Visual Studio 2003 で C# なので .NET 1.1 かと思いますが、
.NET 1.1 を使用するには何か明示的な設定が必要でしょうか?

どうやっても FlatStyle.System で TextAlign が有効にならない…。

アドバイスよろしくお願いします。
988デフォルトの名無しさん:04/11/16 09:59:02
>>987
1.0で試して分かった事。
SlatStyle.SystemではTextAlignは垂直方向への配置以外は無視される。
1.0ではプロパティが完全に無視され、必ずContentAlignment.TopLeftとして扱われてしまっていたが、
そのバグを1.1で修正したのが>982の文章。
989974:04/11/16 10:08:52
>>988
ありがとうございます。私のところでは水平方向の配置は問題なく
行なえるのですが、垂直方向がどうしても上寄せ固定になってしまいます。

これは私の所の環境に問題があるのでしょうか?

みなさんの所では FlatStyle.System で垂直方向、水平方向共に
設定したプロパティが有効になりますか?
990デフォルトの名無しさん:04/11/16 10:17:37
>>989
わかりにくかったか。
左右への寄せは1.0では不可能だったがこれはバグだったので1.1で修正された。
上下への寄せは不可能なのが仕様。
ってこと。

AutoSizeを使うなりして適切なサイズを取得して親コントロールのClientSizeとでPositionを決定するとかすれば。
991974:04/11/16 10:39:00
>>990
そういう事ですか。Label コントロールを使用して垂直方向への
位置合わせを簡単に行なおうとしたら FlatStyle.System をやめるのが
簡単そうですね。

何か理由があって FlatStyle.System にしている気がするんですが、
どうして .System にしたのか思いだせない。。。

XP Style の関係だったような気もしないでもないですが、ラベルコントロール
で FlatStyle.System にすると、何がかわるんでしょう?

今、あらためて調べてみましたが FlatStyle.System にする事により
ラベルコントロールがどのように変化するのかが見つけられませんでした。

何度もすみませんが、このあたり情報があれば教えて頂けないでしょうか?
992デフォルトの名無しさん:04/11/16 12:02:34
初心者です。
#include <stdio.h>
#define K 10
main(void)
{
int score[K];
int i, j;
int temp;
for(i = 1; i <= K ; i++){
printf("a%d = ", i );
scanf("%d", &score[i] );
}
for (i = 1; i <= K ; i++){
for (j = i + 1; j <= K; j++){
if (score[i] > score[j]){
temp = score[i];
score[i] = score[j];
score[j] = temp;
} } }
下から5行目から最後のtempまでの意味はどういうことなのですか?
よろしくおねがいします。
993デフォルトの名無しさん:04/11/16 12:31:33
>>992
C#関係ないし…

っつーかC#のコードじゃないじゃん
994デフォルトの名無しさん:04/11/16 12:31:49
995デフォルトの名無しさん:04/11/16 12:32:09
>>992
それはC#じゃなくてC言語なんだけどな・・・

俗に言うバブルソート(交換方)のプログラム。

int score[K];

で0〜9の10個の配列を作成(#define K 10 の為Kは10と置き換えられる)

そして、最初のforでその配列のそれぞれにscanfを用いて、ユーザに数値を入力させる。
その後、その配列を比べて、小さい順に値を並べ替えている。

ちなみに、このプログラムはバグがある。
配列は0〜9の10個だが、最初のユーザ入力させる部分で、
カウンタが1から始まり、さらに i <= K で10まで処理させるようになっているが、
実際には配列の添え字は9までしかないのでエラーとなる。
996994:04/11/16 12:33:04
997デフォルトの名無しさん:04/11/16 12:33:49
998デフォルトの名無しさん:04/11/16 12:35:06
998
999デフォルトの名無しさん:04/11/16 12:35:34
アフォ
↑馬鹿
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。