C# 如何声明构造函数?
我编译程序时出现以下错误 “Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay”不适用 包含一个接受2参数的构造函数“ 我可能需要为我创建的新东西声明另一个构造函数,但我不知道如何做。我已经在下面发布了相应的代码,你能帮我吗C# 如何声明构造函数?,c#,wpf,C#,Wpf,我编译程序时出现以下错误 “Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay”不适用 包含一个接受2参数的构造函数“ 我可能需要为我创建的新东西声明另一个构造函数,但我不知道如何做。我已经在下面发布了相应的代码,你能帮我吗 public SelectionDisplay(string itemId) { this.InitializeComponent(); this.messageTextBlock.Text =
public SelectionDisplay(string itemId)
{
this.InitializeComponent();
this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
}
var files = Directory.GetFiles(@".\GalleryImages");
foreach (var file in files)
{
FileInfo fileInfo = new FileInfo(file);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri(file, UriKind.Relative);
bi.EndInit();
var button = new KinectTileButton
{
Label = System.IO.Path.GetFileNameWithoutExtension(file),
Background = new ImageBrush(bi),
Tag = file
};
var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);
this.wrapPanel.Children.Add(button);
}
private void KinectTileButtonClick(object sender, RoutedEventArgs e)
{
var button = (KinectTileButton)e.Source;
var image = button.CommandParameter as BitmapImage;
var selectionDisplay = new SelectionDisplay(button.Label, button.Background); // aici poti apoi sa mai trimiti si imaginea ca parametru pentru constructor
this.kinectRegionGrid.Children.Add(selectionDisplay);
e.Handled = true;
}
提前谢谢
编辑:现在我有一个不同的问题。。在我做了这些更改之后,我收到了三个新错误。看一看新的图像和所做的更改
您应该创建一个超负荷的
SelectionDisplay
构造函数,或者更改您已有的构造函数。像这样:
public SelectionDisplay(string itemId, string tag)
{
//Do something here
}
由于您正在创建带有两个参数的SelectionDisplay
的新实例,但其构造函数只接受一个参数。(string itemId
):
您必须检查按钮、标签、标签和背景的类型,并使用这些值创建一个新的构造函数
您可以阅读有关
构造函数的更多信息您应该创建SelectionDisplay
构造函数的重载,或者更改您已有的构造函数。像这样:
public SelectionDisplay(string itemId, string tag)
{
//Do something here
}
由于您正在创建带有两个参数的SelectionDisplay
的新实例,但其构造函数只接受一个参数。(string itemId
):
您必须检查按钮、标签、标签和背景的类型,并使用这些值创建一个新的构造函数
您可以阅读有关构造函数的更多信息您已经创建了一个包含一个参数的构造函数:
public SelectionDisplay(string itemId)
{
//...
}
但你要传递两个参数:
new SelectionDisplay(button.Label as string, button.Tag as string);
您可以向已有的构造函数添加参数,或创建新的参数:
public SelectionDisplay(string itemId, string someOtherValue)
{
//...
}
您已经创建了一个接受一个参数的构造函数:
public SelectionDisplay(string itemId)
{
//...
}
但你要传递两个参数:
new SelectionDisplay(button.Label as string, button.Tag as string);
您可以向已有的构造函数添加参数,或创建新的参数:
public SelectionDisplay(string itemId, string someOtherValue)
{
//...
}
您有两行错误:
var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);
及
您将构造函数定义为
public SelectionDisplay(string itemId)
{
this.InitializeComponent();
this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
}
如果您需要定义一些默认值,那么您需要这样做
public SelectionDisplay(string itemId, string nextParam="default value")
{
this.InitializeComponent();
this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
}
在这种情况下,您可以传递下一个参数,也可以忽略它您有两行错误:
var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);
及
您将构造函数定义为
public SelectionDisplay(string itemId)
{
this.InitializeComponent();
this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
}
如果您需要定义一些默认值,那么您需要这样做
public SelectionDisplay(string itemId, string nextParam="default value")
{
this.InitializeComponent();
this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
}
在这种情况下,您可以传递下一个参数,也可以忽略它参数的数量是错误的,请检查SelectionDisplay Documentation您有SelectionDisplay(string,string)
和SelectionDisplay(Label,Brush)
是否同时使用这两个参数?参数的数量是错误的,选中SelectionDisplay Documents您有SelectionDisplay(string,string)
和SelectionDisplay(Label,Brush)
您打算同时使用这两种工具吗??