2016年07月12日

C#.Net 備忘録

1.フォーカスの当たらないユーザーコントロールの作成
ユーザーコントロール内のEnterイベントで以下のように書きます。
(注:フォームに張り付けたユーザーコントロールのEnterイベントでない)
自分にフォーカスが来たら、親のコントロール(この場合フォーム)に対し、親から見た次の子コントロールにフォーカスを移させます。
これで、マウスでもキーボード操作でもフォーカスが当たらなくなります。

//ユーザーコントロールにフォーカスを持たせない
private void usrCtrFoo_Enter(object sender, EventArgs e)
{
if (this.Parent is Control)
this.Parent.SelectNextControl(this, false, false, false, false);
}

2.フォームでKeyPressイベントを使いたい
フォームのKeyPreviewプロパティをTrueにする

3.インスタンスが指定のクラスであるかを調べたい
typeof(クラス名).IsInstanceOfType(調べたいインスタンス)

応用:フォーム上の特定の種類のコントロールを探す
foreach (var c in this.Controls)
{
    //コントロール上からButtonクラスのインスタンスだけを探す
    if (typeof(Button).IsInstanceOfType(c))
    {
         //ボタンの表示名を列挙
        Console.WriteLine(((Button)c).Text);
    }
}
posted by Hiro at 00:29| Comment(1) | プログラム