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

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

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

Re[3]: MDIアプリでフォーム間の移動抑止


(過去ログ 119 を表示中)

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

■69871 / inTopicNo.1)  MDIアプリでフォーム間の移動抑止
  
□投稿者/ らうむ (1回)-(2014/02/03(Mon) 23:12:38)

分類:[.NET 全般] 

.net3.5 C# Win7 32/64bit

お世話になります。
MDIアプリケーションで子フォームが二つ以上ある場合、Shift+矢印キーの入力でアクティブなフォームが切り替わります。しかし、Shift+矢印のキー入力イベントはフォーム上で別の動作をさせたいと思っております。どのようにすれば、フォームの切り替えを抑止してフォーム上でキー入力イベントを発生できるでしょうか。

よろしくお願いしますm(__)m。
引用返信 編集キー/
■69874 / inTopicNo.2)  Re[1]: MDIアプリでフォーム間の移動抑止
□投稿者/ shu (483回)-(2014/02/04(Tue) 08:04:43)
No69871 (らうむ さん) に返信

VBコードですが以下サンプル
親フォームでProcessDialogKeyをオーバーライドすると良いと思います。


    Protected Overrides Function ProcessDialogKey(keyData As System.Windows.Forms.Keys) As Boolean
        If (keyData And Keys.Shift) <> 0 Then
            Dim Key = keyData And Not (Keys.Shift Or Keys.ShiftKey)
            Select Case Key
                Case Keys.Up, Keys.Down, Keys.Right, Keys.Left
                    Return True
                Case Else
                    Return MyBase.ProcessDialogKey(keyData)
            End Select
        Else
            Return MyBase.ProcessDialogKey(keyData)
        End If
    End Function

引用返信 編集キー/
■69884 / inTopicNo.3)  Re[2]: MDIアプリでフォーム間の移動抑止
□投稿者/ らうむ (2回)-(2014/02/06(Thu) 11:31:37)
shu 様
お世話になります。
サンプルコードまで提示頂き、ありがとうございます。目的の動作を実現できました。

で、関連して別の問題点に気がついたので、こちらで継続して質問させてください。

フォーム上にテキストボックス等の編集キャレットを持つコントロール(データグリッドも)が
有る場合、一度それにフォーカスが当たる(キャレットが点滅状態)と、Shiftキーだけを押した場合は
ProcessDialogKeyが呼び出されますが、Shift+矢印入力時は呼び出しが発生しません。


protected override bool ProcessDialogKey(System.Windows.Forms.Keys keyData)
{
 Debug.Print(keyData.ToString());
 if ((keyData & Keys.Shift) != 0)
 {

上記で、フォーム上にラベル等のコントロールのみの場合はShift+矢印キー入力で

Left, Shift

などが出力されますが、テキストボックスを配置し、それがキャレット点滅状態になると
Shiftキーを押した状態だと

ShiftKey, Shift

が出力されますが、Shift+矢印キーを押すと、Debug出力が出なくなりました。

これを解決する手段はないでしょうか?
テキストボックスをラベルでつくりかえようかとも思いましたが、データグリッドはさすがに
無理なので、別の手段を探したいです。

よい案がありましたらご教示いただきたく。

お手数をおかけし申し訳ありませんが、よろしくお願いしますm(__)m。



引用返信 編集キー/
■70171 / inTopicNo.4)  Re[3]: MDIアプリでフォーム間の移動抑止
□投稿者/ tocs (13回)-(2014/02/26(Wed) 22:04:47)
tocs さんの Web サイト
No69884 (らうむ さん) に返信
> よい案がありましたらご教示いただきたく。

よい案かはわかりませんが、↑↓←→は文字選択やフォーカス移動に使われる操作なのでUI次第では直観性に欠ける恐れがあります。
別のHotキーを用意するとか?
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -