Перед тем, как читать, вот пару страниц я рассматривающие до публикации этого вопроса:Visual Basic: «<name>» не является членом «» <classname>
'Button_Click' : is not a member of 'ButtonTest::MainPage'. Этот вопрос касается C++ и, насколько мне известно, не полезен. Согласно единственному ответу, вам нужно «определить прототип MainPage :: Button_Click в файле MainPage.xaml.h как член класса».
visual basic error BC30456 'Form1' is not a member of 'WindowsApplication1'. Этот вопрос также испытывает ту же ошибку, однако это вызвано чем-то другим. О.П. ответил this answer, говоря, что он исправил проблему:
Если вы переименовали Form1 запуска он, скорее всего, вы должны изменить настройки формы запуска. Вы можете найти этот параметр, чтобы открыть «Мой проект» в «Обозревателе решений». Выберите раздел «Приложение», при необходимости измените «форму запуска».
В моем случае, я не переименовывается ничего так делает проект, а код которого ошибка указывает на это строка, которая добавляет обработчик в «popup.givb»
Я также смотрел на MSDN: Creating Event Handlers for WPF Controls. Страница использует следующий синтаксис для реагирования на кнопку быть нажата:
<Button Click="Button2_Click" />
и
Sub Button2_Click(ByVal Sender As Object, ByVal e As RoutedEventArgs)
'Code here
End Sub
Это точно такой же синтаксис, как я использовал.
Мой код
Я в настоящее время делает программу с использованием WPF и Visual Basic, и я хотел бы сделать небольшое всплывающее окно, если пользователь вызывает ошибку.
У меня есть окно WPF с именем popup.xaml, и у меня есть класс под названием «popup», который наследуется от «окна». Я хочу создать окно, а затем закрыть его, когда пользователь нажмет кнопку «ОК». Эквивалент этого в C# будет следующим:
popup errorWindow = new popup("Error message here");
errorWindow.ShowDialog();
Когда этот метод вызывается, переопределение из всплывающего окна() вызывается, который инициализирует, а также принимает сообщение об ошибке в качестве параметра.
public partial class popup : Window
{
public popup()
{
InitializeComponent();
}
public popup(string errorMessage)
{
InitializeComponent();
this.errorMessage.Text = errorMessage;
}
private void okButton_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
При нажатии кнопки «ОК» нажата, метод okButton_Click() вызывается, и окно закрывается.
В моем Visual Basic приложения, у меня есть один и тот же код WPF для окна ошибки:
<Window x:Class="FacialRecognitionVB.popup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FacialRecognitionVB"
mc:Ignorable="d"
Title="Error." MinHeight="150" MaxHeight="150" Height="150" MinWidth="300" MaxWidth="300" Width="300" >
<Grid>
<Border VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Gray" />
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" >
<TextBlock x:Name="errorMessage" FontSize="18" FontWeight="Medium" Text="An error has occured." TextWrapping="Wrap" />
</StackPanel>
<Button x:Name="okButton" Template="{StaticResource ButtonTemplate}" Content="OK" Width="40" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5,5,5,5" Click="okButton_Click" />
</Grid>
Несмотря на это, обработчик события для нажатия на кнопку воспроизведения вверх. Код VB для моего всплывающего класса почти точно так же:
Partial Public Class popup
Inherits Window
Public Sub Popup()
End Sub
Public Sub Popup(ByVal message As String)
Dim errorMessage As TextBlock
errorMessage.Text = message
End Sub
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
Me.Close()
End Sub
End Class
создать экземпляр класса с помощью этого кода в MainWindow.В.Б:
Dim errorWindow As New popup()
errorWindow.Popup("An error has occured.")
Когда я пытаюсь построить это, я получаю ошибку «okButton_Click» не является членом «всплывающих окон». Двойным щелчком на ошибку в списке ошибок он принимает меня popup.givb и подчеркивает следующее:
#ExternalSource ("..\..\popup.xaml", 14)
AddHandler okButton.Click, New RoutedEventHandler(AddressOf Me.okButton_Click)
#End ExternalSource
Он не даст мне никакой дополнительной информации, кроме «okButton_Click» не является членом " popup '
Как это исправить? У меня на самом деле есть несколько кнопок на моей главной странице, которые отлично работают с использованием визуального базового! Эта одна кнопка, по какой-то причине, этого не делает. Есть ли что-то другое, что мне нужно сделать, потому что оно находится в отдельном окне как часть всплывающего окна?
Update
я был еще один осмотреться сегодня, и я нашел '{name}' is not a member of '{classname}' на MSDN, которая дает следующие два решения:
1: Проверьте имя элемента, чтобы обеспечить ее точность.
2: Используйте действительный член класса.
Моя кнопка называется okButton и метод okButton_Click(). Ошибка подсвечивается в файле popup.g.i.vb, говоря, что Me.okButton_Click не является членом моего popup-класса. Я не вижу, как применяется одно из исправлений выше, так как I am с использованием правильного имени и члена делает.
Если вы вызываете всплывающее окно с помощью ShowDialog, то не должно быть никакой необходимости обрабатывать OK нажатие кнопки, просто сделать кнопку по умолчанию. Кроме того, вы можете использовать MessageBox.show в wpf. –
Я использую showDialog() в коде C#, но не в коде VB –
Есть ли причина, по которой вы не могли использовать ShowDialog или messageBox в коде VB. –