回答編集履歴

1

回答したコードの動作原理の説明を追加

2020/06/08 12:55

投稿

reosablo
reosablo

スコア339

test CHANGED
@@ -1,4 +1,4 @@
1
- `Add_Shown()`の行を次のように変えるとうまくいきました。
1
+ `.Add_Shown()`の行を次のように変えるとうまくいきました。
2
2
 
3
3
 
4
4
 
@@ -10,6 +10,14 @@
10
10
 
11
11
 
12
12
 
13
- 公式情報が見つからないのですが、どうやら`Add_Shown()`メソッドスクリプトブロックを引数とするメソッドのようです。
13
+ PowerShellコントロール(GUIコンポーネント)にイベントハンドラを追加るには`Add_イベント名()`メソッドを使用します。スクリプトブロックを引数に渡すこで、イベントの発火時にその内容を呼び出ことがきます。[(公式Wiki)](https://social.technet.microsoft.com/wiki/contents/articles/25911.how-to-add-a-powershell-gui-event-handler-part-1.aspx)
14
14
 
15
- おそらく[Forms.Shownイベント](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.shown)が発火したときに呼び出す処理を追加するためのものではないかと思います。
15
+
16
+
17
+ フォームをアクティブにするためのメソッド`.Activate()`は[公式ドキュメント](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.activate)によると呼び出しに必須条件があります。
18
+
19
+ > このメソッドが効果を持つようにするには、フォームが表示されている必要があります。
20
+
21
+
22
+
23
+ [Shownイベント](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.shown)が発火するのはフォームが表示されたあとのようなので、`.Add_Shown()`メソッドを使って`.Activate()`の呼び出しをフォームの表示後に遅らせることにより`.Activate()`の呼び出しの条件を満たすことができます。