C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: フォーカスを持たないボタンの作り方


(過去ログ 73 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■42969 / inTopicNo.1)  フォーカスを持たないボタンの作り方
  
□投稿者/ 翡翠 (1回)-(2009/10/25(Sun) 19:37:09)

分類:[.NET 全般] 

タイトル通りなのですが、ご教授頂けませんか?
とりあえずこんなソースを書いてみたのですが・・・

public class MyButton : System.Windows.Forms.Button
{
private const int WM_SETFOCUS = 0x0007;

protected override bool ShowFocusCues
{
get { return false; }
}

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_SETFOCUS:
m.Result = (IntPtr)0;
return;
}

base.WndProc(ref m);
}

}

やりたい事は標準の電卓のように、
通常のキーボードのキーでも反応もするし、
クリックでボタンを押しても反応するように
したいのです。
一度でもクリックしてしまうと、ボタンが
フォーカスを持ってしまい、
それ以降はPreview_KeyDownイベントが実行
されなくなってしまいます。
WndProcのメッセージの処理を
どのように追記すれば良いのでしょうか?
宜しくお願い致します。

環境はVS2008/.net2.0です。

引用返信 編集キー/
■42970 / inTopicNo.2)  Re[1]: フォーカスを持たないボタンの作り方
□投稿者/ Hongliang (494回)-(2009/10/25(Sun) 20:00:01)
コンストラクタ辺りで SetStyle メソッドを使って ControlStyles.Selectable を false に設定するようにすればいいでしょう。
ShowFocusCues と WndProc のオーバーライドは不要です。
引用返信 編集キー/
■42971 / inTopicNo.3)  Re[2]: フォーカスを持たないボタンの作り方
□投稿者/ 翡翠 (3回)-(2009/10/25(Sun) 20:14:32)
No42970 (Hongliang さん) に返信
> コンストラクタ辺りで SetStyle メソッドを使って ControlStyles.Selectable を false に設定するようにすればいいでしょう。
> ShowFocusCues と WndProc のオーバーライドは不要です。

試してみましたが変わりませんでした。

ShowFocusCuesについては

http://dobon.net/vb/bbs/log3-34/21074.html

こちらを参考に、フォーカス時の四角枠を消したいと
思って入れたのですが、これもまた普通に四角形が
出てしまうようです。

コーディング以外にプロパティで設定すべき事が
あったりするのでしょうか?ちなみにTabStopも
Falseにしてみたりしたのですが変わりませんでした。

引用返信 編集キー/
■42972 / inTopicNo.4)  Re[3]: フォーカスを持たないボタンの作り方
□投稿者/ Hongliang (495回)-(2009/10/25(Sun) 20:55:15)
ひょっとして、Form のコンストラクタでやってませんか? Button を派生させ、その派生させたクラスのコンストラクタでやるものですが。
引用返信 編集キー/
■42973 / inTopicNo.5)  Re[4]: フォーカスを持たないボタンの作り方
□投稿者/ 翡翠 (4回)-(2009/10/25(Sun) 21:10:59)
No42972 (Hongliang さん) に返信
> ひょっとして、Form のコンストラクタでやってませんか? Button を派生させ、その派生させたクラスのコンストラクタでやるものですが。

すみません。その通りでした(--;
うっかりしてました。
うまくいきました。ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -