teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

変更

2018/05/09 14:31

投稿

YAmaGNZ
YAmaGNZ

スコア10654

answer CHANGED
@@ -110,15 +110,13 @@
110
110
 
111
111
  ### 追記
112
112
  ```C#
113
- public static class UnsafeNativeMethods
114
- {
115
- [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
116
- public static extern bool SetForegroundWindow(HandleRef hWnd);
117
- }
118
113
 
114
+ [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
115
+ public static extern bool SetForegroundWindow(HandleRef hWnd);
116
+
119
117
  public static void OpenMenu()
120
118
  {
121
- UnsafeNativeMethods.SetForegroundWindow(new HandleRef(rmenu, rmenu.Handle));
119
+ SetForegroundWindow(new HandleRef(rmenu, rmenu.Handle));
122
120
  rmenu.Items.Clear();
123
121
  rmenu.Items.Add("アイテム1");
124
122
  rmenu.Items.Add("アイテム2");

1

追記

2018/05/09 14:31

投稿

YAmaGNZ
YAmaGNZ

スコア10654

answer CHANGED
@@ -106,4 +106,27 @@
106
106
  ただ、この時にメニュー以外の部分をクリックしてもメニューが消えない
107
107
  動きをしております。(この対処も分かりませんでした。)
108
108
 
109
- 多分もっとすっきりした方法があるのだと思います。
109
+ 多分もっとすっきりした方法があるのだと思います。
110
+
111
+ ### 追記
112
+ ```C#
113
+ public static class UnsafeNativeMethods
114
+ {
115
+ [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
116
+ public static extern bool SetForegroundWindow(HandleRef hWnd);
117
+ }
118
+
119
+ public static void OpenMenu()
120
+ {
121
+ UnsafeNativeMethods.SetForegroundWindow(new HandleRef(rmenu, rmenu.Handle));
122
+ rmenu.Items.Clear();
123
+ rmenu.Items.Add("アイテム1");
124
+ rmenu.Items.Add("アイテム2");
125
+ rmenu.Items.Add("-");
126
+ rmenu.Items.Add("キャンセル");
127
+ rmenu.Show(Cursor.Position, ToolStripDropDownDirection.BelowRight);
128
+ rmenu.ShowImageMargin = false;
129
+ }
130
+
131
+ ```
132
+ こうすることにより、フォームを表示し、フォーカス移動を行わなくてもタスクバーに表示されなくなりました。