【问题标题】:Cannot dynamically add new button无法动态添加新按钮
【发布时间】:2012-01-11 15:17:22
【问题描述】:

我刚开始学习 VB 和 Visual Studio,但遇到了一个问题。我花了一天中最好的时间来寻找答案,但我有一种可怕的感觉,那就是我已经看过了一些非常简单的东西。

我正在使用 Visual Studio 2010 中的 WPF,并尝试在单击按钮时在主窗口上动态创建一个按钮(我知道,我读过的所有内容都告诉我这是非常基本的!)这是一个编辑了我写的代码的sn-p:

Imports System.Data.OleDb
Imports System.Windows.Forms
Imports Excel = Microsoft.Office.Interop.Excel

Class MainWindow

    Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles edit.Click

    ...

    Dim newButton As New Button
    newButton.Text = "New Button"
    newButton.Top = 200
    newButton.Left = 20
    Me.Controls.Add(newButton)

    ...

    End Sub

在我看来,这看起来非常简单和正确,但我遇到了一个错误:

"'Controls' 不是 'myApp.MainWindow' 的成员。"

有没有人遇到过这个问题或者知道问题出在哪里?抱歉,如果这确实是一个简单的解决方法:)

【问题讨论】:

    标签: wpf vb.net visual-studio-2010


    【解决方案1】:

    您得到的错误是告诉您Controls 不存在于MainWindow 中。基本上,您的事件处理程序无法访问该名称的属性。如果您正在使用 WPF 并且 MainWindow 继承 Window,那么您需要在 Content 属性中设置一些内容。

    解决此问题的最佳方法是将某种形式的容器控件作为窗口的内容。您可以在 XAML 或代码中定义它(通过代码您应该设置 Window.Content 属性)。然后,您可以向该容器添加更多控件。建议的容器有Grid、Canvas和StackPanel等。

    我会建议这样的事情:

    XAML

    <MainWindow ...>
    
        <StackPanel x:Name="ControlContainer">
            <Button Content="Click me to create buttons!" Click="CreateButton_Click" />
        </StackPanel>
    </MainWindow>
    

    代码背后

    Private Sub CreateButton_Click(ByVal sender As Object, ByVal e As EventArgs)
    
        Dim button As New Button()
    
        ' Initialize the button
        ' ...
    
        ' Add the button to the stack panel
        Me.ControlContainer.Children.Add(button)
    End Sub
    

    【讨论】:

      【解决方案2】:

      MainWindow 不是一个表单。创建一个新项目并在按钮中复制相同的代码。

      你必须找出你的表单控件有什么问题。

      【讨论】:

        【解决方案3】:

        看起来您正在混合使用 WinForms 和 WPF 编码 - 这是两种不同的技术。

        This link 可以帮助你在运行时在 WPF 中添加一个按钮

        【讨论】:

          猜你喜欢
          • 2020-09-19
          • 1970-01-01
          • 1970-01-01
          • 2018-05-22
          • 1970-01-01
          • 2016-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多