下面是一个基于事件机制编写计算器程序的 C# 示例,包含页面且可运行:

using System;
using System.Windows;
using System.Windows.Controls;

namespace CalculatorApp
{
    public partial class MainWindow : Window
    {
        private string currentNumber;
        private string operand;
        private double result;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void NumberButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            currentNumber += button.Content.ToString();
            DisplayLabel.Content = currentNumber;
        }

        private void OperationButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            operand = button.Content.ToString();
            result = double.Parse(currentNumber);
            currentNumber = "";
            DisplayLabel.Content = operand;
        }

        private void EqualsButton_Click(object sender, RoutedEventArgs e)
        {
            double secondOperand = double.Parse(currentNumber);
            switch (operand)
            {
                case "+":
                    result += secondOperand;
                    break;
                case "-":
                    result -= secondOperand;
                    break;
                case "*":
                    result *= secondOperand;
                    break;
                case "/":
                    result /= secondOperand;
                    break;
            }
            DisplayLabel.Content = result.ToString();
            currentNumber = "";
        }

        private void ClearButton_Click(object sender, RoutedEventArgs e)
        {
            currentNumber = "";
            operand = "";
            result = 0;
            DisplayLabel.Content = "";
        }
    }
}

在这个示例中,我们使用 WPF(Windows Presentation Foundation)来创建计算器的用户界面。计算器的布局使用 XAML(Extensible Application Markup Language),并通过事件处理函数来实现不同按钮的功能。

XAML 文件 (MainWindow.xaml) 示例:

<Window x:Class="CalculatorApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Calculator" Height="450" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Label x:Name="DisplayLabel" Grid.ColumnSpan="4" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" FontSize="30" Margin="10" />

        <Button Grid.Row="1" Grid.Column="0" Content="7" Click="NumberButton_Click" />
        <Button Grid.Row="1" Grid.Column="1" Content="8" Click="NumberButton_Click" />
        <Button Grid.Row="1" Grid.Column="2" Content="9" Click="NumberButton_Click" />
        <Button Grid.Row="1" Grid.Column="3" Content="/" Click="OperationButton_Click" />

        <Button Grid.Row="2" Grid.Column="0" Content="4" Click="NumberButton_Click" />
        <Button Grid.Row="2" Grid.Column="1" Content="5" Click="NumberButton_Click" />
        <Button Grid.Row="2" Grid.Column="2" Content="6" Click="NumberButton_Click" />
        <Button Grid.Row="2" Grid.Column="3" Content="*" Click="OperationButton_Click" />

        <Button Grid.Row="3" Grid.Column="0" Content="1" Click="NumberButton_Click" />
        <Button Grid.Row="3" Grid.Column="1" Content="2" Click="NumberButton_Click" />
        <Button Grid.Row="3" Grid.Column="2" Content="3" Click="NumberButton_Click" />
        <Button Grid.Row="3" Grid.Column="3" Content="-" Click="OperationButton_Click" />

        <Button Grid.Row="4" Grid.Column="0" Content="0" Click="NumberButton_Click" />
        <Button Grid.Row="4" Grid.Column="1" Content="C" Click="ClearButton_Click" />
        <Button Grid.Row="4" Grid.Column="2" Content="=" Click="EqualsButton_Click" />
        <Button Grid.Row="4" Grid.Column="3" Content="+" Click="OperationButton_Click" />
    </Grid>
</Window>

在代码中,我们创建了 MainWindow 类来表示主窗口,并在构造函数中初始化界面。各个按钮的点击事件通过 NumberButton_Click、OperationButton_Click、EqualsButton_Click 和 ClearButton_Click 方法进行处理。

在 NumberButton_Click 方法中,我们将按钮的内容添加到 currentNumber 字符串中,并将其显示在 DisplayLabel 标签中。

在 OperationButton_Click 方法中,我们保存当前数字为 result,并将操作符保存到 operand 变量中,并将操作符显示在 DisplayLabel 标签中。

在 EqualsButton_Click 方法中,我们解析当前数字为双精度浮点数,并根据操作符执行相应的运算。最后将结果显示在 DisplayLabel 标签中,并将 currentNumber 重置为空字符串。

在 ClearButton_Click 方法中,我们将 currentNumber、operand 和 result 重置,并清空 DisplayLabel 标签的内容。

要运行此程序,您需要创建一个新的 WPF 应用程序项目,并将上述代码添加到相应的文件中。然后,您可以构建并运行该项目,以查看计算器应用程序的界面和功能。

C# 事件驱动型计算器程序:包含页面并可运行

原文地址: https://www.cveoy.top/t/topic/bx7M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录