Powershell中的.NET 4(WinForms)动态表单控件创建

时间:2011-06-03 19:10:06

标签: winforms powershell

我正在尝试动态地将表单控件添加到我在PowerShell中开发的gui中。我看过VB和C#示例,但似乎无法让我的表单实际用新控件填充gui。我想要的是能够向表单附加可能大量的附加控件,并且添加的控件将被转储到可滚动的字段中,因此它们不会在gui的结尾处结束。我如何尝试完成此操作是将一个组合框附加到tablelayoutpanel。我的想法是,使用新的组合框控件向tablelayoutpanel添加一个新行将实现此目的。所以我想我有两个问题:

  1. 这是一种逻辑上正确的方法,可以动态地将控件添加到允许可滚动溢出的对象吗?
  2. 如果#1为真,我该如何完成这个tasK?
  3. 这是我尝试的最新迭代:

    $button1_Click={
        $new = New-Object System.Windows.Forms.ComboBox
        Add-ComboBox $rowCount
        $rowCount++
    }
    
    function Add-ComboBox {
        param([string] $rowCount)
        $combobox = New-Object System.Windows.Forms.ComboBox
        $combobox.Dock = [System.Windows.Forms.DockStyle]::Fill
        $combobox.Text = ""
        $combobox.Tag = "ComboBox$rowCount"
        $tablelayoutpanel1.Controls.Add($combobox, 1, $rowCount)
    }
    

    非常感谢您的协助。

2 个答案:

答案 0 :(得分:1)

这可能很有用,虽然它是WPF,但代码片段创建了一个窗口,其上有几个按钮,根据添加到StackPanel的按钮数量调整大小

$window = new-object System.Windows.Window
$stackPanel = new-object System.Windows.Controls.StackPanel

$buttonNum = 20
for( $i = 0; $i -lt $buttonNum; $i++ )
{
    $button = new-object System.Windows.Controls.Button
    $button.Content = "Button Text" + $i
    $stackPanel.Children.Add( $button )
}

$scrollViewer = new-object System.Windows.Controls.ScrollViewer
$scrollViewer.Content = $stackPanel
$window.Content = $scrollViewer

$window.SizeToContent = [System.Windows.SizeToContent]::Width
$window.Height = 100
$window.ShowDialog()

答案 1 :(得分:0)

我在Microsoft Technet论坛上找到了答案。论坛主持人一直在帮我解决这个问题。谢谢!

http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/b2c8abeb-3ae6-4936-9bef-a50a79fdff45/