前提・実現したいこと
Class の中でFormを扱いたいです。
その際にForm内のコントロールのイベントも設定したいのですが
イベントを発生させたコントロールにはアクセスできたのですが
その他のコントロールへのアクセス方法が分かりません。
どうしたらいいでしょうか?
該当のソースコード
例えばですが$TxBox1の値が変更されたら$TxBox2の値も変更したいのですが
出来ません。
powershell
1Using NameSpace System.Windows.Forms 2 3Class MyForm 4{ 5 [Form] $Form = [Form]::new() 6 [TextBox] $TxBox1 = [TextBox]::new() 7 [TextBox] $TxBox2 = [TextBox]::new() 8 [SplitContainer] $SplitContainer = [SplitContainer]::new() 9 10 11 12 hidden [scriptblock] $Form_Resize = 13 { 14 [SplitContainer]$SplitContainer = $This.Controls | where { $_.GetType().Name -eq "SplitContainer" } 15 $SplitContainer.Size = $This.ClientSize 16 } 17 18 hidden [scriptblock] $SplitContainer_Resize = 19 { 20 [TextBox]$TxBox1 = $This.Panel1.Controls[0] 21 [TextBox]$TxBox2 = $This.Panel2.Controls[0] 22 23 $TxBox1.Size = $This.Panel1.ClientSize 24 $TxBox2.Size = $This.Panel2.ClientSize 25 } 26 27 hidden [scriptblock] $Change = 28 { 29 <# 30 TxBox1 の値が変更されたら 31 TxBox2 の値も同様に設定したい 32 でも$Thisだと自身しか拾えない 33 #> 34 Write-host $This.Text 35 } 36 37 38 39 MyForm() 40 { 41 $This.Form.Controls.Add($This.SplitContainer) 42 $This.SplitContainer.Panel1.Controls.Add($This.TxBox1) 43 $This.SplitContainer.Panel2.Controls.Add($This.TxBox2) 44 45 $This.Form.Add_Resize($This.Form_Resize) 46 $This.SplitContainer.Add_SplitterMoved($This.SplitContainer_Resize) 47 $This.TxBox1.Add_TextChanged($This.Change) 48 49 } 50 51 [void] ShowDialog() 52 { 53 $This.Form.ShowDialog() 54 } 55} 56 57$Form = [MyForm]::new() 58 59$Form.ShowDialog()
補足情報(FW/ツールのバージョンなど)
Win10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/01 01:34
2019/02/01 01:37
2019/02/01 01:44
2019/02/01 01:52
2019/02/01 02:03
2019/02/01 02:09
2019/02/01 02:24
2019/02/01 04:04
2019/02/01 04:07
2019/02/01 04:15
2019/02/01 05:09
2019/02/01 06:23
2019/02/01 07:11 編集