用VS制作简易计算器(WPF)
时间: 2023-11-26 11:06:07 浏览: 76
好的,我可以为您提供一些指导。
首先,在Visual Studio中创建一个新的WPF项目。在项目中添加一个Grid控件,然后在Grid中添加一些按钮、文本框和标签,这些将组成我们的计算器界面。
接下来,需要编写一些代码来处理按钮的点击事件。您可以为每个数字、运算符和清除按钮添加一个Click事件处理程序,并在其中编写相应的代码。
例如,对于数字按钮,您可以在Click事件处理程序中获取该按钮上的数字,然后将其添加到文本框中。对于运算符按钮,您可以在Click事件处理程序中获取当前文本框中的数字和运算符,在执行计算后将结果显示在文本框中。
最后,您可以添加一些样式和布局来美化您的计算器界面,使其更加用户友好。
以下是一个简单的示例,演示如何在WPF中创建一个简单的计算器。
```xml
<Window x:Class="Calculator.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Calculator" Height="350" Width="350">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBox x:Name="ResultText" Grid.Row="0" Margin="5" Text="0" IsReadOnly="True"/>
<Button x:Name="ClearButton" Grid.Row="1" Margin="5" Content="C" Width="50" Height="50" Click="ClearButton_Click"/>
<Button x:Name="PlusMinusButton" Grid.Row="1" Margin="5,0,0,0" Content="+/-" Width="50" Height="50" Click="PlusMinusButton_Click"/>
<Button x:Name="PercentButton" Grid.Row="1" Margin="5,0,0,0" Content="%" Width="50" Height="50" Click="PercentButton_Click"/>
<Button x:Name="DivideButton" Grid.Row="1" Margin="60,0,0,0" Content="/" Width="50" Height="50" Click="OperatorButton_Click"/>
<Button x:Name="SevenButton" Grid.Row="2" Margin="5" Content="7" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="EightButton" Grid.Row="2" Margin="5,0,0,0" Content="8" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="NineButton" Grid.Row="2" Margin="5,0,0,0" Content="9" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="MultiplyButton" Grid.Row="2" Margin="60,0,0,0" Content="*" Width="50" Height="50" Click="OperatorButton_Click"/>
<Button x:Name="FourButton" Grid.Row="3" Margin="5" Content="4" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="FiveButton" Grid.Row="3" Margin="5,0,0,0" Content="5" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="SixButton" Grid.Row="3" Margin="5,0,0,0" Content="6" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="MinusButton" Grid.Row="3" Margin="60,0,0,0" Content="-" Width="50" Height="50" Click="OperatorButton_Click"/>
<Button x:Name="OneButton" Grid.Row="4" Margin="5" Content="1" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="TwoButton" Grid.Row="4" Margin="5,0,0,0" Content="2" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="ThreeButton" Grid.Row="4" Margin="5,0,0,0" Content="3" Width="50" Height="50" Click="NumberButton_Click"/>
<Button x:Name="PlusButton" Grid.Row="4" Margin="60,0,0,0" Content="+" Width="50" Height="50" Click="OperatorButton_Click"/>
<Button x:Name="ZeroButton" Grid.Row="5" Margin="5" Content="0" Width="105" Height="50" Click="NumberButton_Click"/>
<Button x:Name="DecimalButton" Grid.Row="5" Margin="5,0,0,0" Content="." Width="50" Height="50" Click="DecimalButton_Click"/>
<Button x:Name="EqualsButton" Grid.Row="5" Margin="60,0,0,0" Content="=" Width="50" Height="50" Click="EqualsButton_Click"/>
</Grid>
</Window>
```
```csharp
public partial class MainWindow : Window
{
private double _result = 0;
private string _operator = "";
private bool _isNewNumber = true;
public MainWindow()
{
InitializeComponent();
}
private void NumberButton_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
string number = button.Content.ToString();
if (_isNewNumber)
{
ResultText.Text = number;
_isNewNumber = false;
}
else
{
ResultText.Text += number;
}
}
private void OperatorButton_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
string newOperator = button.Content.ToString();
if (_operator != "")
{
double currentValue = double.Parse(ResultText.Text);
_result = Calculate(_result, currentValue, _operator);
ResultText.Text = _result.ToString();
}
else
{
_result = double.Parse(ResultText.Text);
}
_operator = newOperator;
_isNewNumber = true;
}
private void EqualsButton_Click(object sender, RoutedEventArgs e)
{
double currentValue = double.Parse(ResultText.Text);
_result = Calculate(_result, currentValue, _operator);
ResultText.Text = _result.ToString();
_operator = "";
_isNewNumber = true;
}
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
ResultText.Text = "0";
_result = 0;
_operator = "";
_isNewNumber = true;
}
private void PlusMinusButton_Click(object sender, RoutedEventArgs e)
{
double currentValue = double.Parse(ResultText.Text);
currentValue *= -1;
ResultText.Text = currentValue.ToString();
}
private void PercentButton_Click(object sender, RoutedEventArgs e)
{
double currentValue = double.Parse(ResultText.Text);
currentValue /= 100;
ResultText.Text = currentValue.ToString();
}
private void DecimalButton_Click(object sender, RoutedEventArgs e)
{
if (!_isNewNumber && !ResultText.Text.Contains("."))
{
ResultText.Text += ".";
}
}
private double Calculate(double firstNumber, double secondNumber, string operation)
{
double result = 0;
switch (operation)
{
case "+":
result = firstNumber + secondNumber;
break;
case "-":
result = firstNumber - secondNumber;
break;
case "*":
result = firstNumber * secondNumber;
break;
case "/":
result = firstNumber / secondNumber;
break;
}
return result;
}
}
```
这个示例只是一个简单的计算器,您可以根据需要进行修改和扩展。希望这些提示对您有所帮助!
阅读全文