C# 我的第一个使用C&WPF的项目-如何设置.xaml.cs中的变量以显示在文本框中?

C# 我的第一个使用C&WPF的项目-如何设置.xaml.cs中的变量以显示在文本框中?,c#,wpf,xaml,C#,Wpf,Xaml,我正在尝试用C和WPF构建一个计算器 目的是学习和测试新事物 代码如下: XAML XAML.CS using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; usin

我正在尝试用C和WPF构建一个计算器

目的是学习和测试新事物

代码如下:

XAML

XAML.CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace calculator
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        List<int> lista = new List<int>();
        string number = "";
        int res = 0;

        private void Button_Click_Add(object sender, RoutedEventArgs e)
        {
            int numberCreated;
            try
            {
                numberCreated = Int32.Parse(number);
                lista.Add(numberCreated);
            }
            catch (Exception)
            {
                MessageBox.Show("Number could not be added!");
            }
            number = "";
            if(lista.Count != 0)
            {
                foreach(var element in lista)
                {
                    res += element;
                }
                lista.Clear();
            }
            MessageBox.Show(res.ToString());
        }

        private void Button_Click_Subtract(object sender, RoutedEventArgs e)
        {
            try
            {
                int numberCreated = Int32.Parse(number);
                lista.Add(numberCreated);
            }
            catch(Exception)
            {
                MessageBox.Show("Number could not be added!");
            }
            number = "";
            if (lista.Count != 0)
            {
                foreach (var element in lista)
                {
                    res -= element;
                }
                lista.Clear();
            }
            MessageBox.Show(res.ToString());
        }

        private void Button_Click_Multiply(object sender, RoutedEventArgs e)
        {
            try
            {
                int numberCreated = Int32.Parse(number);
                lista.Add(numberCreated);
            }
            catch (Exception)
            {
                MessageBox.Show("Number could not be added!");
            }
            number = "";
            if (lista.Count != 0)
            {
                foreach (var element in lista)
                {
                    res *= element;
                }
                lista.Clear();
            }
            MessageBox.Show(res.ToString());
        }

        private void Button_Click_Divide(object sender, RoutedEventArgs e)
        {
            try
            {
                int numberCreated = Int32.Parse(number);
                lista.Add(numberCreated);
            }
            catch (Exception)
            {
                MessageBox.Show("Number could not be added");
            }
            number = "";
            if (lista.Count != 0)
            {
                foreach (var element in lista)
                {
                    res /= element;
                }
                lista.Clear();
            }
            MessageBox.Show(res.ToString());
        }

        private void Button_Click9(object sender, RoutedEventArgs e)
        {
            number += "9";
        }

        private void Button_Click8(object sender, RoutedEventArgs e)
        {
            number += "8";
        }

        private void Button_Click7(object sender, RoutedEventArgs e)
        {
            number += "7";
        }

        private void Button_Click6(object sender, RoutedEventArgs e)
        {
            number += "6";
        }

        private void Button_Click5(object sender, RoutedEventArgs e)
        {
            number += "5";
        }

        private void Button_Click4(object sender, RoutedEventArgs e)
        {
            number += "4";
        }

        private void Button_Click3(object sender, RoutedEventArgs e)
        {
            number += "3";
        }

        private void Button_Click2(object sender, RoutedEventArgs e)
        {
            number += "2";
        }

        private void Button_Click1(object sender, RoutedEventArgs e)
        {
            number += "1";
        }

        private void Button_Click0(object sender, RoutedEventArgs e)
        {
            number += "0";
        }
    }
}
我愿意接受你给初学者的任何建议和想法

我之所以发布此消息,是因为我不知道如何在每次操作后将res变量显示在文本框中

我在网上看到很多人在谈论TextBox.text,但我不知道如何使用它

可能我必须在.xaml.cs中使用它,但是如何定义TextBox呢?我的程序如何知道要将文本应用到哪个文本框

另外,我觉得有一种更好的方法可以使用按钮创建一个数字,而不是创建10个单独的功能,从按钮点击0到按钮点击9,我想听听一些想法


谢谢

有几种方法可以做到这一点,例如数据绑定。 但是我想对于学习来说,因为这是你学习WPF的第一步,你应该更容易开始

要通过代码访问控件,必须在XAML中为其命名:

<TextBox x:Name="TxtResult" HorizontalAlignment="Left" Height="35" Margin="37,49,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="321" FontFamily="Arial" FontSize="20" TextAlignment="Right"/>
编辑以回答您的最后一个问题: 此外,还有许多方法可以使它变得更好或更容易。如果需要,可以对命令、命令参数和命令绑定进行一些研究。 但对于这个简单的演示案例,您可以简单地对所有数字按钮使用相同的事件处理程序:

private void ButtonNumberClick(object sender, RoutedEventArgs e)
{
    number += ((Button) sender).Content;
    this.TxtResult.Text = number;
}
sender参数包含触发事件处理程序的UI对象,因此您将获得对已单击按钮的引用。由于每个按钮的内容属性已经包含要添加到字符串中的数字,因此可以从那里获取该数字并将其附加到数字字符串中

现在,在XAML中,您只需将该事件处理程序分配给所有十个按钮:

    <Button Content="9" HorizontalAlignment="Left" Margin="295,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="8" HorizontalAlignment="Left" Margin="166,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="7" HorizontalAlignment="Left" Margin="37,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="6" HorizontalAlignment="Left" Margin="295,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="5" HorizontalAlignment="Left" Margin="166,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="4" HorizontalAlignment="Left" Margin="37,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="3" HorizontalAlignment="Left" Margin="295,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="2" HorizontalAlignment="Left" Margin="166,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="1" HorizontalAlignment="Left" Margin="37,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="0" HorizontalAlignment="Left" Margin="37,316,0,0" VerticalAlignment="Top" Width="321" FontFamily="Arial" Click="ButtonNumberClick"/>

你好你能去掉样本代码中不必要的部分吗?这将使每个人的工作更容易:只需保留绝对最小值来重现您的问题。@Corentpane我希望展示任何内容,因为正如我所说,我是一个完全的初学者,我想我可能也会得到一些提示:感谢您的时间关于您的最后一段,使用Items控件您可以使用单击事件处理程序的单个函数,然后,您可以将发送者对象强制转换为按钮,然后检查内容以了解单击了哪个按钮var button=sender as button,button.content.ToString将是1,2,3,4 etcThanks。成功了。另外,你能回答我问题的最后一段吗?@JohnSmith我们开始了:非常感谢你的时间。
private void ButtonNumberClick(object sender, RoutedEventArgs e)
{
    number += ((Button) sender).Content;
    this.TxtResult.Text = number;
}
    <Button Content="9" HorizontalAlignment="Left" Margin="295,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="8" HorizontalAlignment="Left" Margin="166,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="7" HorizontalAlignment="Left" Margin="37,224,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="6" HorizontalAlignment="Left" Margin="295,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="5" HorizontalAlignment="Left" Margin="166,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="4" HorizontalAlignment="Left" Margin="37,254,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="3" HorizontalAlignment="Left" Margin="295,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="2" HorizontalAlignment="Left" Margin="166,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="1" HorizontalAlignment="Left" Margin="37,285,0,0" VerticalAlignment="Top" Width="63" FontFamily="Arial" Click="ButtonNumberClick"/>
    <Button Content="0" HorizontalAlignment="Left" Margin="37,316,0,0" VerticalAlignment="Top" Width="321" FontFamily="Arial" Click="ButtonNumberClick"/>