RuQian

Winform ( form1.cs )

Jul 9th, 2025 (edited)
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.56 KB | Source Code | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace calculator
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.  
  20.         bool isResult = true;
  21.         double prevNumber = 0;
  22.         string prevOperator = "=";
  23.         const int digit = 5;
  24.         Form2 form2;
  25.  
  26.         private void Form1_Load(object sender, EventArgs e)
  27.         {
  28.             label1.Text = "0";
  29.             form2 = new Form2();
  30.         }
  31.         private void Button_NumberClick(object sender, EventArgs e)
  32.         {  
  33.             Button clickedBtn = (Button)sender;
  34.  
  35.             if (isResult)
  36.             {
  37.                 label1.Text = (clickedBtn.Text == ".") ? "0." : clickedBtn.Text;
  38.                 isResult = false;
  39.                 return;
  40.             }
  41.  
  42.             if (clickedBtn.Text == ".")
  43.             {
  44.                 label1.Text += clickedBtn.Text;
  45.                 return;
  46.             }
  47.  
  48.             if(label1.Text != "0")
  49.             {
  50.                 label1.Text += clickedBtn.Text;
  51.             }
  52.             else
  53.             {
  54.                 label1.Text = clickedBtn.Text;
  55.             }  
  56.         }
  57.  
  58.         private void Button_OperatorClick(object sender, EventArgs e)
  59.         {
  60.             Button clickedButton = (Button)sender;
  61.             string log = "";
  62.             if (label1.Text == "")
  63.             {
  64.                 prevOperator = clickedButton.Text;
  65.                 return;
  66.             }
  67.             double curNumber = Double.Parse(label1.Text);
  68.             log += prevNumber.ToString() + prevOperator + curNumber.ToString() + " = ";
  69.             if (prevOperator == "+") curNumber = prevNumber + curNumber;
  70.             else if (prevOperator == "-") curNumber = prevNumber - curNumber;
  71.             else if (prevOperator == "*") curNumber = prevNumber * curNumber;
  72.             else if (prevOperator == "/")
  73.             {
  74.                 if (curNumber == 0)
  75.                 {
  76.                     MessageBox.Show("不可除以 0", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  77.                     return;
  78.                 }
  79.                 curNumber = prevNumber / curNumber;
  80.             }
  81.             log += curNumber.ToString();
  82.             if(prevOperator != "=") form2.writeLog(log);
  83.  
  84.             prevNumber = curNumber;
  85.             label1.Text = "";
  86.             if (clickedButton.Text == "=")
  87.             {
  88.                 curNumber = Math.Round(curNumber, digit, MidpointRounding.AwayFromZero);
  89.                 label1.Text = curNumber.ToString();
  90.                 isResult = true;
  91.             }
  92.             else
  93.             {
  94.                 isResult = false;
  95.             }
  96.             prevOperator = clickedButton.Text;
  97.         }
  98.  
  99.         private void button16_Click(object sender, EventArgs e)
  100.         {
  101.             label1.Text = "0";
  102.             prevNumber = 0;
  103.             prevOperator = "=";
  104.             isResult = true;
  105.         }
  106.  
  107.         private void button18_Click(object sender, EventArgs e)
  108.         {
  109.             if (label1.Text.Length > 1)
  110.             {
  111.                 label1.Text = label1.Text.Substring(0, label1.Text.Length - 1);
  112.             }
  113.             else
  114.             {
  115.                 label1.Text = "0";
  116.             }
  117.         }
  118.  
  119.         private void button19_Click(object sender, EventArgs e)
  120.         {
  121.             form2.Show();
  122.         }
  123.     }
  124. }
  125.  
Tags: ui winform
Advertisement
Add Comment
Please, Sign In to add comment