【问题标题】:Multiply value from textbox with combobox and display in label in WPF将文本框中的值与组合框相乘并显示在 WPF 中的标签中
【发布时间】:2016-01-27 10:45:58
【问题描述】:

我对使用 xaml 和 C# 在 WPF 中进行编程非常陌生,我在论坛中搜索过类似的问题,但找不到任何解决问题的方法。

我制作了一个包含三个项目的组合框,每个项目都有一个文本内容。选择其中一个项目时,我想将文本框中的值乘以一个数字并在标签中显示结果。这是我的代码:

public MainWindow()
    {
        InitializeComponent();
        int a = Int32.Parse(weight.Text);
        double b;

        if (this.wcf.SelectedItem==weighing)
        {
            b = a * 1.03;
            wll.Content = b.ToString();
        }
        else if (this.wcf.SelectedItem == uptodate)
        {
            b = a * 1.1;
            wll.Content = b.ToString();
        }
        else if (this.wcf.SelectedItem == lessupdated)
        {
            b = a * 1.2;
            wll.Content = b.ToString();
        }

    }

“weight”是文本框的名称,“wcf”是组合框的名称,“weighing”、“uptodate”和“lessupdated”是组合框项的名称,“wll”是标签的名称.这些在主窗口的 xaml 中定义。

【问题讨论】:

  • 在构造函数中读取某些内容没有意义(用户尚未输入/选择某些内容)。您更有可能想要使用一些事件(例如组合框的SelectionChangedTextChanged)并在其中执行上述逻辑(解析、检查和设置)。或者是什么问题?

标签: c# wpf xaml combobox


【解决方案1】:

您的组合框需要一个事件处理程序。 比如:

<Combobox x:Name="wcf" SelectionChanged="cb_SelectionChanged">[...]</Combobox>

在你的代码后面:

private void cb_SelectionChanged(object sender, RoutedEventArgs e)
{
...
}

每次单击项目时都会调用方法cb_SelectionChanged

【讨论】:

  • 如果我想在新的 if 语句中进一步使用 b 变量,在我刚刚展示的 if 语句之后,我得到一个使用未分配局部变量的错误。我是否需要将 b 变量转换为 int 并再次赋值?
  • 如果你不给变量 b 赋值,你不能例如增加它。在初始化变量时,您可以给它一个默认值(例如double b = 0)以进一步使用它。
猜你喜欢
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
相关资源
最近更新 更多