我是WPF
的新人,但熟悉oop
,generics
等等。但我正在尝试制作一个计算器,看看
我通过自己的编码得到了我的方法。
但问题是我有点困惑的是如何获得显示在文本框中的值并进行求和?
查看来源:
using System;
using System.Windows;
using System.Text;
namespace WpfCalculatorGUI
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void nine(Object sender, RoutedEventArgs e)
{
DispBox.AppendText("9");
}
}
}
请帮助指导。
答案 0 :(得分:2)
解决此问题的正确方法是创建MVVM体系结构并使用绑定。你必须阅读更多关于这一点,因为这是一个很长的话题。
中途快速解决解决方案可能是绑定到表单本身:
<Window x:Name="rootControl" ...
<TextBox Text="{Binding ElementName=rootControl, Path=Display, Mode=TwoWay}" ...
和
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string display;
// Implement INotifyPropertyChanged
// This should be done by Commands, actually
public void Nine(Object sender, RoutedEventArgs e)
{
Display += "9";
}
public string Display
{
get
{
return display;
}
set
{
display = value;
if (NotifyPropertyChanged != null)
NotifyPropertyChanged(this, new PropertyChangedEventArgs("Display");
}
}
}
答案 1 :(得分:-1)
设置名称=&#34; tb&#34;(这就是我命名为文本框的内容)并添加Click =&#34; Button_Click&#34;你的1,2,3,4,....按钮 然后在.cs文件中执行此操作以在文本框中显示单击的数字
private void Button_Click(object sender, RoutedEventArgs e)
{
Button b = (Button)sender;
tb.Text += b.Content.ToString();
}
private void Result_Click(object sender, RoutedEventArgs e)
{
try
{
result();
}
catch (Exception exc)
{
Console.WriteLine("Receiving", exc.StackTrace);
tb.Text = "Error!";
}
}
private void result()
{
String op;
int iOp = 0;
if (tb.Text.Contains("+"))
{
iOp = tb.Text.IndexOf("+");
}
else if (tb.Text.Contains("-"))
{
iOp = tb.Text.IndexOf("-");
}
else if (tb.Text.Contains("*"))
{
iOp = tb.Text.IndexOf("*");
}
else if (tb.Text.Contains("/"))
{
iOp = tb.Text.IndexOf("/");
}
else
{
tb.Text = "Error";
}
op = tb.Text.Substring(iOp, 1);
double op1 = Convert.ToDouble(tb.Text.Substring(0, iOp));
double op2 = Convert.ToDouble(tb.Text.Substring(iOp + 1, tb.Text.Length - iOp - 1));
if (op == "+")
{
tb.Text += "=" + (op1 + op2);
}
else if (op == "-")
{
tb.Text += "=" + (op1 - op2);
}
else if (op == "*")
{
tb.Text += "=" + (op1 * op2);
}
else
{
tb.Text += "=" + (op1 / op2);
}
}