我在编译时收到错误

本文关键字:错误 编译 | 更新日期: 2023-09-27 17:56:38

在我进行了下面帖子中建议的更改后,我收到了一个新错误。您可以在那里找到有关错误的详细信息(见图1)。你知道我该怎么解决这个问题吗?

如何声明构造函数?

http://i58.tinypic.com/qwwqvn.png

编辑:对不起,我是新来的,所以我真的不知道事情进展如何。在上一篇文章中,有人建议我写一篇带有该问题链接的新帖子。我现在将提供足够的细节,以便您可以了解正在发生的事情。

我有 3 个错误想要解决...

这些错误的代码发布在下面

"参数 1:无法从'对象'转换为'字符串'"

"参数 2:无法从'System.Windows.Media.Brush'转换为'string'"

"'Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay.SelectionDisplay(string, string)' 有一些无效的参数"

public SelectionDisplay(string itemId, string Tag)
    {
        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 的构造函数:

var selectionDisplay = new SelectionDisplay(button.Label as string, button.Tag as string);
var selectionDisplay = new SelectionDisplay(button.Label,button.Background); // aici poti apoi sa mai trimiti si imaginea ca parametru pentru constructor

第一个需要两个字符串,第二个需要对象和画笔(如您遇到的错误所示)。这意味着您需要两个构造函数:

public class SelectionDisplay
{
    public SelectionDisplay(string itemId, string Tag)
    {
        this.InitializeComponent();
        this.messageTextBlock.Text = string.Format(CultureInfo.CurrentCulture,Properties.Resources.SelectedMessage,itemId);
    }
    public SelectionDisplay(object label, Brush background)
    {
        //Do stuff
    }
}

现在,您可能需要考虑只有一个构造函数,但您需要确保始终使用相同的参数类型调用它。

如果我能澄清任何事情,请告诉我!