DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■34289 / inTopicNo.1)  ToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法
  
□投稿者/ z-f 一般人(1回)-(2019/07/31(Wed) 15:13:57)
  • アイコン環境/言語:[C# WinForms .NETFramework 4.7.2 ] 
    分類:[.NET] 

    ContextMenuStripを使ってTextBox用のコンテキストメニューを作成中です。
    ToolStripMenuItemにShortcutKeysを指定して、メニューをクリックした時とショートカットキーを押した場合で同じ挙動をさせたいのですが、
    ショートカット使用時はthis.SourceControl=nullとなってしまい、使用元のTextBoxが取得できずに困っています。
    何か良い方法は無いでしょうか?
マルチポストを報告
違反を報告
引用返信 削除キー/
■34290 / inTopicNo.2)  Re[1]: ToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法
□投稿者/ 魔界の仮面弁士 大御所(1237回)-(2019/07/31(Wed) 16:28:03)
  • アイコン2019/07/31(Wed) 16:30:06 編集(投稿者)

    No34289に返信(z-fさんの記事)
    > ショートカット使用時はthis.SourceControl=nullとなってしまい、使用元のTextBoxが取得できずに困っています。

    キーボードショートカットを使う際には、そのコントロールが
    アクティブになっているでしょうから、
    ActiveControl プロパティで判断できるかもしれません。


    private void toolStripMenuItem1_Click(object sender, EventArgs e)
    {
      // var menu = (ToolStripMenuItem)sender;
      var sourceControl = contextMenuStrip1.SourceControl ?? (ActiveForm ?? this).ActiveControl;
      if (sourceControl != null)
      {
        MessageBox.Show(sourceControl.Name);
      }
    }
違反を報告
引用返信 削除キー/
■34291 / inTopicNo.3)  Re[2]: ToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法
□投稿者/ z-f 一般人(2回)-(2019/07/31(Wed) 18:13:40)
  • アイコンなるほど、ActiveControlは思いつかなかった。
    これでなんとかなりそうです。感謝。
解決み!
違反を報告
引用返信 削除キー/



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

このトピックに書きこむ

Mode/  Pass/


- Child Tree -