Невозможно динамически добавить новую кнопку - PullRequest
0 голосов
/ 11 января 2012

Я только начинаю изучать VB и Visual Studio и столкнулся с проблемой. Я потратил большую часть дня, пытаясь найти ответ, и у меня ужасное чувство, что это будет что-то очень простое, что я просмотрел.

Я работаю над WPF в Visual Studio 2010 и пытаюсь динамически создать кнопку в главном окне при нажатии кнопки (я знаю, что все, что я прочитал, говорит мне, что это довольно просто!) отредактированный фрагмент кода, который я написал:

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 '."

Кто-нибудь сталкивался с этим раньше или знает, в чем проблема? Извиняюсь, если это оказывается простым исправлением:)

Ответы [ 3 ]

5 голосов
/ 11 января 2012

Полученная ошибка говорит о том, что 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
0 голосов
/ 11 января 2012

Похоже, вы смешиваете WinForms и кодирование WPF - это две разные технологии.

Эта ссылка может помочь вам добавить кнопку во время выполнения в WPF

0 голосов
/ 11 января 2012

скважина MainWindow не является формой .создайте новый проект и скопируйте тот же код в кнопку, с которой он будет работать.

вы должны выяснить, в чем проблема с вашим элементом управления формой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...