【问题标题】:How to connect WPF GUI (buttons etc.) to methods of a class? [closed]如何将 WPF GUI(按钮等)连接到类的方法? [关闭]
【发布时间】:2016-09-29 06:52:23
【问题描述】:

我有一些初学者问题。

假设我想创建一个程序,它有一个类 Ford,里面除了一个名为 Colorstring 类型的属性之外什么都没有。

现在,我想单击位于主窗口中的按钮,该按钮将此类的某些实例的属性Color 设置为"blue"。还有一个显示当前颜色的文本框。

我想设置之前通过

创建的 Ford 类对象的属性
Ford fordFocus = new Ford(); 

我的问题是——我一写focus,Visual Studio 就会立即在focus 下添加一条红线。在我看来,对象没有创建或看不到,超出范围,我不知道。

换句话说,我知道如何创建一个使用控制台进行输入和输出的程序,但我无法理解如何使用 WPF GUI 而不是控制台创建或多或少相同的东西。我的福特例子可能不好,如果是这样,请忽略并以其他方式解释。

它的所有 WPF 模板 VisualStudio 2015,MainWindow.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {

        InitializeComponent();
        Ford focus = new Ford();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        focus.Color = "Sky blue";
    }

}

福特级里面有什么:

private string _color;
public string Color
{
    get { return _color; }
    set { _color = value; }
}

谢谢。

【问题讨论】:

  • 您需要使用代码更新您的问题。对于我们来说,要弄清楚你卡在哪里,真是太疯狂了。
  • 我们可以看看你的 GUI 或者你到目前为止所做的任何事情
  • 从 app.cs 中获取 (Ford fordFocus = new Ford(); 并将其放在包含您的按钮的 WIndow 类的顶部,它将在范围内
  • 我询问what you've done so far 的原因是。你的问题刚刚在我脑海中浮现,特别是福特的东西
  • 我还是不明白你在做什么,请你简单解释一下你想要什么。你想让我从中提取什么 (prntscr.com/bajtb0) [ScreenShot]

标签: c# wpf visual-studio xaml user-interface


【解决方案1】:

问题似乎是,您在MainWindow 的构造函数中声明了focus,但尝试在另一个方法中使用它——这意味着focus 是在另一个范围内定义的。

public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
      // --- focus is declared HERE --- 
      Ford focus = new Ford();
    }  
    private void button_Click(object sender, RoutedEventArgs e)
    {
      // -- Your try to use focus HERE --
      focus.Color = "Sky blue";
    }
  }

您可以在 MainWindow 中添加一个可以从构造函数和方法中访问的字段。

public partial class MainWindow : Window
{
  // -- DECLARE focus HERE
  private Ford focus;
  public MainWindow()
  {
    InitializeComponent();
    // --- focus can be CREATED HERE --- 
    this.focus = new Ford();
  }

  private void button_Click(object sender, RoutedEventArgs e)
  {
    // -- Now you can USE focus HERE --
    this.focus.Color = "Sky blue";
  }
}

您可以在 MSDN 上找到有关范围的一些有用信息

【讨论】:

  • 谢谢!现在可以了。我基本上是 C# 的初学者,尤其是 GUI。如果我想创建一个超出范围并在程序结束时被销毁的对象,我应该在这个地方创建它是吗?
猜你喜欢
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2017-06-08
相关资源
最近更新 更多