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

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

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

Re[3]: ピクチャーボックスのフォーカスを固定する方法


(過去ログ 12 を表示中)

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

■3253 / inTopicNo.1)  ピクチャーボックスのフォーカスを固定する方法
  
□投稿者/ keichan (1回)-(2007/04/27(Fri) 18:17:24)

分類:[C# (Windows)] 

お世話になります。
keichan です。

開発環境:Visual Studio 2005 SP1 Professional Edition
開発言語:C#


現在ピクチャーボックスの処理において困っています。
フォーム上にピクチャーボックスと、その他複数のコントロールを配置し、ピクチャーボックス上でクリックした際に
pictureBox.Focus();
でフォーカスを当てています。

その状態で↑↓←→を押下した際にフォーカスが別コントロールに移ってしまうのを防ぎたいのですが、
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.picturebox(VS.80).aspx
の解説を見ると
-----------------------------------------------------------------------------------------------
PictureBox は選択可能なコントロールではないため、入力フォーカスを受け取ることもできません。
-----------------------------------------------------------------------------------------------
と書かれてあります。


しかし、ピクチャーボックスがフォーカスされている時にキーを押下すると PreviewKeyDown イベントが発生するので
フォーカス自体は正常に設定されているように見えます。

↑↓←→キーが押下された際にフォーカスを別コントロールに移動させない方法は
ピクチャーボックスコントロール標準で搭載されているのでしょうか?
それらしきものを見つけられませんでしたので、質問させていただきます。

宜しくお願い致します。
引用返信 編集キー/
■3255 / inTopicNo.2)  Re[1]: ピクチャーボックスのフォーカスを固定する方法
□投稿者/ 未記入 (72回)-(2007/04/27(Fri) 22:08:41)
No3253 (keichan さん) に返信
> しかし、ピクチャーボックスがフォーカスされている時にキーを押下すると PreviewKeyDown イベントが発生するので
> フォーカス自体は正常に設定されているように見えます。

どこのPreviewKeyDownイベントが発生していますか?
いずれにしても、フォーカスの定義間違ってるんじゃないですか?

> ↑↓←→キーが押下された際にフォーカスを別コントロールに移動させない方法は
> ピクチャーボックスコントロール標準で搭載されているのでしょうか?
> それらしきものを見つけられませんでしたので、質問させていただきます。

上位のProcess関係のキーメソッドで無視してやれば良いです。
引用返信 編集キー/
■3288 / inTopicNo.3)  Re[2]: ピクチャーボックスのフォーカスを固定する方法
□投稿者/ keichan (2回)-(2007/05/01(Tue) 10:43:07)
ご回答ありがとうございます。

> どこのPreviewKeyDownイベントが発生していますか?
Focus() でフォーカスを当てたピクチャーボックスの PreviewKeyDown イベントが発生します。


> いずれにしても、フォーカスの定義間違ってるんじゃないですか?
フォーカスについて解説されているサイト・書籍を紹介していただけると助かります。


> 上位のProcess関係のキーメソッドで無視してやれば良いです。
public class MyPictureBox : PictureBox
{
	protected override bool IsInputKey(Keys keyData)
	{
		if ((keyData & Keys.Up) != 0 || (keyData & Keys.Down) != 0 || (keyData & Keys.Left) != 0 || (keyData & Keys.Right) != 0)
		{
			return true;
		}
		return base.IsInputKey(keyData);
	}
}

上記 派生クラス MyPictureBox を作成し、ピクチャーボックスと置き換えることで期待する動作を確認致しました。
アドバイス頂いた、「上位のProcess関係で無視」とはこういう事で合っているのでしょうか?

引用返信 編集キー/
■3369 / inTopicNo.4)  Re[3]: ピクチャーボックスのフォーカスを固定する方法
□投稿者/ keichan (3回)-(2007/05/08(Tue) 11:24:07)
本件の問題は解消しましたので、解決とさせて頂きます。
ありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -