質問するログイン新規登録
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

2回答

301閲覧

Powershell自動採番したテキストボックスの値が取得できない

Android-student

総合スコア8

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2025/08/27 16:49

0

0

実現したいこと

Powershellのfor文でテキストボックスを複数作成して取り扱う。

発生している問題・分からないこと

Powershellのfor文でテキストボックスを複数作成した際、Form上には出力されているが値を参照しようとしても取得できない。

該当のソースコード

Powershell

1Add-Type -AssemblyName System.Windows.Forms 2Add-Type -AssemblyName System.Drawing 3 4$form = New-Object System.Windows.Forms.Form 5$form.Text = 'Data Entry Form' 6$form.Size = New-Object System.Drawing.Size(300,200) 7$form.StartPosition = 'CenterScreen' 8 9$Button = New-Object System.Windows.Forms.Button 10$Button.Location = New-Object System.Drawing.Point(75,120) 11$Button.Size = New-Object System.Drawing.Size(75,23) 12$Button.Text = 'OK' 13$Button.DialogResult = [System.Windows.Forms.DialogResult]::OK 14$form.AcceptButton = $Button 15$form.Controls.Add($Button) 16 17for($i=1; $i -le 5; $i++){ 18$textBox = 'textbox' + $i 19${$textBox} = New-Object System.Windows.Forms.TextBox 20${$textBox}.Location = New-Object System.Drawing.Point(10*$i,40*$i) 21${$textBox}.Size = New-Object System.Drawing.Size(260,20) 22$form.Controls.Add(${$textBox}) 23} 24 25$form.Topmost = $true 26$form.ShowDialog() 27 28$Button.add_click{ 29 [System.Windows.Forms.MessageBox]::Show($textbox1.Text + $textbox2.Text + $textbox3.Text + $textbox4.Text + $textbox5.Text) 30}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

「powershell オブジェクト 自動採番」で検索してみましたが解決しませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

■テキストボックスの値をformから取得するサンプルプログラム

PowerShell

1Add-Type -AssemblyName System.Windows.Forms 2Add-Type -AssemblyName System.Drawing 3 4$form = New-Object System.Windows.Forms.Form 5$form.Text = 'Data Entry Form' 6$form.Size = New-Object System.Drawing.Size(400,300) # ← 400,300 に変更しました 7$form.StartPosition = 'CenterScreen' 8 9$Button = New-Object System.Windows.Forms.Button 10$Button.Location = New-Object System.Drawing.Point(75,230) 11$Button.Size = New-Object System.Drawing.Size(75,23) 12$Button.Text = 'OK' 13$Button.DialogResult = [System.Windows.Forms.DialogResult]::OK 14$form.AcceptButton = $Button 15$form.Controls.Add($Button) 16 17for($i=1; $i -le 5; $i++){ 18$textBox = 'textbox' + $i 19${$textBox} = New-Object System.Windows.Forms.TextBox 20${$textBox}.Location = New-Object System.Drawing.Point((10*$i),(40*$i)) # ← (10*$i),(40*$i) に変更しました 21${$textBox}.Size = New-Object System.Drawing.Size(260,20) 22$form.Controls.Add(${$textBox}) 23} 24 25$form.Topmost = $true 26 27$Button.add_click{ 28 [System.Windows.Forms.MessageBox]::Show($form.Controls[1].Text + $form.Controls[2].Text + $form.Controls[3].Text + $form.Controls[4].Text + $form.Controls[5].Text) # ← formから取得するように変更しました 29} 30 31$form.ShowDialog() # ← ShowDialogを最後に移動しました

■変数にオブジェクトは登録されていません。

(例)$textbox1.text = "abc" と入力するとエラーになります。

結論として $textbox1.text から値を取得することは出来ません。

解決策は form から値を取得する方法になります。

投稿2025/08/28 00:56

ccc-

総合スコア358

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

配列を利用しましょう

イメージ説明

PowerShell

1Add-Type -AssemblyName System.Windows.Forms 2Add-Type -AssemblyName System.Drawing 3 4$form = New-Object System.Windows.Forms.Form 5$form.Text = 'Data Entry Form' 6$form.Size = New-Object System.Drawing.Size(300,450) 7$form.StartPosition = 'CenterScreen' 8 9$Button = New-Object System.Windows.Forms.Button 10$Button.Location = New-Object System.Drawing.Point(75,250) 11$Button.Size = New-Object System.Drawing.Size(75,23) 12$Button.Text = 'OK' 13$Button.DialogResult = [System.Windows.Forms.DialogResult]::OK 14 15$form.AcceptButton = $Button 16$form.Controls.Add($Button) 17 18$textboxes = @() 19for($i=1; $i -le 5; $i++){ 20 $textBox = New-Object System.Windows.Forms.TextBox 21 $x = 10 22 $y = 40 * $i 23 $textBox.Location = New-Object System.Drawing.Point($x, $y) 24 $textBox.Size = New-Object System.Drawing.Size(260,20) 25 $form.Controls.Add($textBox) 26 $textboxes += $textbox 27} 28 29$Button.add_click{ 30 [System.Windows.Forms.MessageBox]::Show($textboxes[0].Text + $textboxes[1].Text + $textboxes[2].Text + $textboxes[3].Text + $textboxes[4].Text) 31} 32 33 34$form.Topmost = $true 35$form.ShowDialog()

投稿2025/08/27 18:37

vj2a6wk5

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問