错误-已经定义了一个名为'InitializeComponent'使用相同的参数类型

本文关键字:InitializeComponent 类型 参数 定义 一个 错误 | 更新日期: 2023-09-27 18:19:02

我试着用这本书来举例说明

private Button button1;
public MainWindow()
{
    InitializeComponent();
}
private void InitializeComponent()
{
    // Configure the form.
    this.Width = this.Height = 285;
    this.Left = this.Top = 100;
    this.Title = "Code-Only Window";
    // Create a container to hold a button.
    DockPanel panel = new DockPanel();
    // Create the button.
    button1 = new Button();
    button1.Content = "Please click me.";
    button1.Margin = new Thickness(30);
    // Attach the event handler.
    button1.Click += button1_Click;
    // Place the button in the panel.
    IAddChild container = panel;
    container.AddChild(button1);
    // Place the panel in the form.
    container = this;
    container.AddChild(panel);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
    button1.Content = "Thank you.";
}

但是它给了我一个错误:

"Type 'WpfApplication1.MainWindow' already defines a member called 'InitializeComponent' with the same parameter types"

错误-已经定义了一个名为'InitializeComponent'使用相同的参数类型

在Visual Studio中创建的WPF Window类通常有InitializeComponent方法用于初始化其属性和内容- InitializeComponent()是做什么的,以及它如何在WPF中工作?

它是从你的XAML标记生成的,不包含在你的代码后面。cs文件中,但对于编译器(和msbuild.exe),它仍然是窗口类的一个有效的内在部分-如果你创建新的空窗口并单击InitializeComponent()调用然后一个*.g.i.cs临时文件初始化代码将被打开。

所以,当你把另一个InitializeComponent方法放到文件后面的代码中时,它会导致方法定义不明确。


解决方案:

将您的自定义方法重命名为InitializeComponentsCustom,并在构造函数中调用它:

public MainWindow()
{
    InitializeComponent();
    InitializeComponentsCustom();
}
private void InitializeComponentsCustom()
{
    // ...
}

只是将book方法的整个代码放入构造函数(只是不删除原始的InitializeComponent调用)。

InitializeComponent方法是在MainWindow.g.cs中定义MainWindow.xaml时自动生成的。

就像我在评论中说的,阅读。适当的阅读是你在编程生涯中需要的一种美德。

你要严格遵照书上的注释:

要创建这个示例,您必须从头开始编写Window1类(右键单击解决方案资源管理器并选择Add -> class开始)。您不能选择Add -> Window,因为这会为您的窗口添加一个代码文件 XAML模板,并使用自动生成的InitializeComponent()方法完成。

你得到的错误也告诉你:你试图定义另一个 InitializeComponent()方法。

对于我来说,它是使用Cocoa框架绑定Xamarin iOS

我使用的视图有两个名为init()的构造函数,它们具有不同的重载。

我在apidedefinition .cs中删除了其中一个,这对我来说很有用。

相关文章:
  • 没有找到相关文章