2012-01-11 173 views
0

我剛開始學習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 

我的眼睛,這看起來非常簡單,正確的,但我得到一個錯誤:

「‘控制’是不是成員'myApp.MainWindow'。」

以前有沒有人遇到過這個問題,或者知道問題是什麼?道歉,如果這確實是一個簡單的修復:)

回答

0

well MainWindow不是表格。創建一個新的項目,並將相同的代碼複製到一個可以工作的按鈕中。

你必須找出你的表單控制有什麼問題。

5

您收到的錯誤是告訴您ControlsMainWindow內不存在。基本上,這個名稱沒有屬性可以從你的事件處理程序訪問。如果您正在使用WPF並且MainWindow繼承Window,那麼您需要在Content屬性中設置某些內容。

這樣做的最好方法是將某種形式的容器控制作爲窗口的內容。你可以在XAML或代碼中定義這個(通過代碼你應該設置Window.Content屬性)。然後,您可以將更多控件添加到該容器。建議容器GridCanvasStackPanel

我建議是這樣的:

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 
0

它看起來像你是mixi ng WinForms和WPF編碼 - 這是兩種不同的技術。

This link可以幫助你在運行時WPF

添加一個按鈕