PowerShell winforms选项卡选择的索引已更改事件



我在PowerShell中使用WinForms设计了GUI,如下所示

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)

我想处理selectedindex changed事件,但我做不到,我在上面的代码中出现了以下错误

Method invocation failed because [System.Windows.Forms.TabControl] does not contain a method named 'SelectedIndexChanged'.,所以有人能帮我吗

发现这就是我需要添加事件的方式

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

而不是这个

TabControl.SelectedIndexChanged($TabControl_SelectedIndexChanged)
$TabControl_SelectedIndexChanged
{
    ({$selectedTab = $TabControl.SelectedTab;
    [System.Windows.Forms.MessageBox]::Show($selectedTab)})
}

可能有点延迟响应,但这是您可能正在寻找的代码: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()

编辑:刚刚看到这篇文章:将选项卡部分添加到powershell gui

最新更新