So-net無料ブログ作成
検索選択
QLOOKアクセス解析

[Winform] フォーム上のコントロールへのアクセス [PowerShell]

Winformで、フォーム上に配置されたコントロールは、
フォームの Controls プロパティControl.ControlCollection)に格納されています。
この中の目的のコントロールに名前を指定してアクセスするために PowerShell では次のように書きます。
コントロール名を連想配列のキーとして扱うような記述方法ですね。
(フォーム $this の中の tableLayoutPanelBase という名前(Name プロパティ値)を持つ
コントロールを変数 panel に格納する例です。)
$panel = $this.Controls['tableLayoutPanelBase']
入れ子になったパネルの上のコントロールへのアクセスは次のように続けて書くこともできます。長いですけど。
$checkBoxMonitor =
$this.Controls['tableLayoutPanelBase'].Controls['tableLayoutPanelData'].
Controls['checkBoxMonitor']
Controls の要素には、名前ではなく配列のインデックス番号で Controls[0] のようにしてアクセスすることも可能です。
また、たとえばイベントハンドラー(関数やスクリプトブロック)からアクセスしたいようなコントロールは、フォームから順にたどってアクセスするのではなく、作成時などに script スコープの変数に入れておけば、その変数を使ってアクセスすることも可能です。
コントロールを作成する関数内にイベントハンドラースクリプトブロックを記述すれば、local スコープの変数でも見えるのかと思いましたが、そうではないようです。たとえば次のようなスクリプトで、イベントハンドラー($OnShowDialog1)の《記述場所》はコントロールを作成したスコープの内側だとしても、実行時にはそうではないといういうことなのでしょう、おそらく。
$script:checkBox1 = New-Object System.Windows.Forms.CheckBox
$script:checkBox2 = New-Object System.Windows.Forms.CheckBox

$OnShowDialog1 =
{
     $checkBox1.Checked = $This.Tag.prop1
     $checkBox1.Checked = $This.Tag.prop2
}

$FormSetting.Add_Shown($OnShowDialog1)

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。
メッセージを送る
人気ブログランキングへ
 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。