1

I have designed the GUI using WinForms in PowerShell as follows

Add-Type -Assembly 'System.Windows.Forms'

$form = New-Object Windows.Forms.Form

$TabControl = New-Object System.Windows.Forms.TabControl

$tabPage1 = New-Object System.Windows.Forms.TabPage
$tabPage1.Name = "Tab1"
$tabPage1.Text = "Tab1"
$tabPage1.Width = 500
$tabPage1.Height = 500

$tabPage2 = New-Object System.Windows.Forms.TabPage
$tabPage2.Name = "Tab2"
$tabPage2.Text = "Tab2"
$tabPage2.Width = 500
$tabPage2.Height = 500


$TabControl.TabPages.Add($tabPage1)
$TabControl.TabPages.Add($tabPage2) 

$TabControl.SelectedIndexChanged($TabControl_SelectedIndexChanged)

$TabControl_SelectedIndexChanged
{
    ({$selectedTab = $TabControl.SelectedTab;

    [System.Windows.Forms.MessageBox]::Show($selectedTab)})
}
$form.Controls.Add($TabControl)

I would like to handle the selectedindex changed event but I couldn't, I got the following error with the above code

Method invocation failed because [System.Windows.Forms.TabControl] does not contain a method named 'SelectedIndexChanged'. so can some one help me

2 Answers 2

1

Figured it out this is how I need to add the event

$TabControl.Add_SelectedIndexChanged({
    $selectedTab = $TabControl.SelectedTab
    [System.Windows.Forms.MessageBox]::Show($selectedTab.TabIndex)
})

instead of this

TabControl.SelectedIndexChanged($TabControl_SelectedIndexChanged)

$TabControl_SelectedIndexChanged
{
    ({$selectedTab = $TabControl.SelectedTab;

    [System.Windows.Forms.MessageBox]::Show($selectedTab)})
}
Sign up to request clarification or add additional context in comments.

Comments

0

maybe a bit late response, but this is the code you are maybe looking for :D

Add-Type -Assembly 'System.Windows.Forms'

$form = New-Object Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(610,360) 

$TabControl = New-Object System.Windows.Forms.TabControl
$TabControl.Location = New-Object System.Drawing.Size(100,0)
$TabControl.Size = New-Object System.Drawing.Size(450,130)

$tabPage1 = New-Object System.Windows.Forms.TabPage
$tabPage1.Name = "Tab1"
$tabPage1.Text = "Tab1"

$tabPage2 = New-Object System.Windows.Forms.TabPage
$tabPage2.Name = "Tab2"
$tabPage2.Text = "Tab2"

$TabControl.TabPages.Add($tabPage1)
$TabControl.TabPages.Add($tabPage2) 

$TabControl.Add_SelectedIndexChanged({
    $selectedTab = $TabControl.SelectedTab
})

$form.Controls.Add($TabControl)

$form.Topmost = $True
$form.Add_Shown({$form.Activate()})
[void] $form.ShowDialog()

edit: Just saw this post: adding tabs section to powershell gui

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.