Visual Basic中:“”不是“”
一员,你看之前,这里有几页我已经看过张贴了这个问题之前:Visual Basic中:“<name>”不是“<classname>”
'Button_Click' : is not a member of 'ButtonTest::MainPage'。这个问题关于C++,据我所知,并没有用。根据唯一的答案,您需要“在MainPage.xaml.h文件中将MainPage :: Button_Click的原型定义为该类的成员。”
visual basic error BC30456 'Form1' is not a member of 'WindowsApplication1'。这个问题也会遇到同样的错误,但是它是由其他原因造成的。在OP回答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目前正在做节目,我想作一个小窗口弹出,如果用户将导致错误。
我有一个名为popup.xaml的WPF窗口,我有一个名为'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();
}
}
点击'ok'按钮后,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中使用此代码创建类的实例。VB:
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'
我该如何解决这个问题?我的主页上实际上有几个按钮,可以完美的使用visual basic!这个按钮由于某种原因没有。有什么不同,我需要做,因为它是在一个单独的窗口作为弹出窗口的一部分?
更新
我有另一个今天环顾四周,我发现'{name}' is not a member of '{classname}'在MSDN这给下面的两个解决方案:
1:检查成员的名称,以确保其准确。
2:使用该类的实际成员。
我的按钮名为okButton,方法是okButton_Click()。该错误在popup.g.i.vb文件中突出显示,表示Me.okButton_Click不是我的popup类的成员。我没有看到上述任何一个修正如何适用,因为我am使用了正确的名称并且成员确实存在。
您的构造函数定义不正确 - 构造函数总是在VB.NET中命名为New
- 您需要从构造函数中调用InitializeComponent
。你也在做Dim errorMessage As TextBlock
,因为它是在XAML中定义的,所以不需要它。
这看起来似乎已经打破了XAML和代码隐藏文件之间的链接,它可能更容易删除相关的窗口中的所有文件,并从头开始,但背后的代码应该是这个样子:
Partial Public Class popup
Inherits Window
Public Sub New()
' This call is required by the designer.
InitializeComponent()
End Sub
Public Sub New(ByVal message As String)
' This call is required by the designer.
InitializeComponent()
errorMessage.Text = message
End Sub
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
Me.Close()
End Sub
End Class
在VS2015,后面的代码没有Partial
或Inherits Window
部件,所以那些可能并不需要,但可能不会伤害任何东西。
显示窗口也应该像C#版本:
Dim errorWindow As New popup("An error has occured.")
errorWindow.ShowDialog()
'errorMessage.Text没有被声明'除此之外,构造函数按预期工作,并且InitializeComponent()现在被正确声明了。我认为构造函数就像在C#中一样,它们共享类的名字..... –
我试图构建,现在它说initializeComponent()没有声明再次,原来的问题'okButton_Click()不是弹出窗口的成员'仍然显示 –
我刚刚删除了window.xaml,因为我们没有使用它,这也给我构建错误Oo –
如果您呼叫使用的ShowDialog弹出,那么应该没有需要处理OK按钮的点击,只是使它的默认按钮。或者,您仍然可以在wpf中使用MessageBox.show。 –
我在C#代码中使用showDialog()但不在我的VB代码中 –
是否有任何理由不能在VB代码中使用ShowDialog或MessageBox。 –