我刚开始学习VB和Visual Studio,我遇到了一个问题。我花了大部分时间试图找到答案,我有一种可怕的感觉,这将是一个非常简单的东西,我已经看了。
我正在使用Visual Studio 2010中的WPF,并且在单击按钮时尝试在主窗口上动态创建一个按钮(我知道,我读过的所有内容都告诉我这是非常基本的!)这是一个已编辑的代码片段:
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'的成员。”
有没有人遇到过这个或知道问题是什么?如果这确实是一个简单的解决方案,请道歉:)
答案 0 :(得分:5)
您收到的错误告诉您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
答案 1 :(得分:0)
好的MainWindow不是表单。创建一个新项目并将相同的代码复制到一个可以工作的按钮中。
您必须找出表单控件的问题。
答案 2 :(得分:0)
看起来你正在混合WinForms和WPF编码 - 这是两种不同的技术。
This link可以帮助您在WPF中的运行时添加按钮