通过三种形式制作计算器-如何正确连接形式,该怎么办?

时间:2018-07-19 10:47:44

标签: c# .net windows forms

所以我要用三种形式制作计算器-带数字的形式,带运算的形式和带结果的形式。我不知道如何在单击数字和单击运算符时连接和存储数据,以保存该第一个数字,使用运算符并输入第二个数字,当然还有最终结果...这里有些帮助吗?

Here is the code : This is the first form and calculator.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Kalkulator
    {
     public partial class Kalkulator : Form
    {
        public Kalkulator()
        {
            InitializeComponent();
            _operacije.Show();
            _rezultat.Show();
        }


        public delegate void obracunaj();

        public event obracunaj Obracunajevent;
        //public void NoveOperacije()
        //{
        //    var f = new Operacije();
        //    f.Obracunajevent += obracunaj_event;
        //    f.Show();
        //}

        Rezultat _rezultat = new Rezultat();
        Operacije _operacije = new Operacije();

        int[] array = new int[1];
        decimal value1;
        private void n1_Click(object sender, EventArgs e)
        {

            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "1";
                value1 = Convert.ToDecimal(_rezultat.textBox1.Text);
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "1";
            }
        }

        private void n2_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "2";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "2";
            }
        }

        private void n3_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "3";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "3";
            }
        }

        private void n4_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "4";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "4";
            }
        }

        private void n5_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "5";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "5";
            }
        }

        private void n6_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "6";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "6";
            }
        }

        private void n7_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "7";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "7";
            }
        }

        private void n8_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "8";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "8";
            }
        }

        private void n9_Click(object sender, EventArgs e)
        {
            if (_rezultat.textBox1.Text == "0" && _rezultat.textBox1.Text != 
null)
            {
                _rezultat.textBox1.Text = "9";
            }
            else
            {
                _rezultat.textBox1.Text = _rezultat.textBox1.Text + "9";
            }
        }

        private void n0_Click(object sender, EventArgs e)
        {
            _rezultat.textBox1.Text = _rezultat.textBox1.Text + "0";
        }




     }

}

这是名为“操作”的第二种形式

using Kalkulator;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Kalkulator
{
    public partial class Operacije : Form
    {
        public Operacije()
        {
            InitializeComponent();
        }

        double PrviBroj;
        string Operacija;
        double Rezultat1;

        Izracun _izracun = new Izracun();
        Rezultat _rezultat = new Rezultat();


        void obracunaj_event()
        {
            return;
        }

        decimal value2;

        private void jednako_Click_1(object sender, EventArgs e)
        {

            if(!String.IsNullOrEmpty(_rezultat.textBox1.ToString()))
            {
                value2 = Convert.ToDecimal(_rezultat.textBox1.Text);
                MethodToExecute();
                _rezultat.Show();
            }
        }

        public void MethodToExecute() //tu spada jednako_Click_1
        {

            double DrugiBroj;
            double Rezultat;

            if (double.TryParse(_rezultat.textBox1.Text, out Rezultat1))
            {
                DrugiBroj = Convert.ToDouble(_rezultat.textBox1.Text);

                if (Operacija == "+")
                {
                    Rezultat = (PrviBroj + DrugiBroj);
                    _rezultat.textBox1.Text = Convert.ToString(Rezultat);
                    PrviBroj = Rezultat;
                }
                if (Operacija == "-")
                {
                    Rezultat = (PrviBroj - DrugiBroj);
                    _rezultat.textBox1.Text = Convert.ToString(Rezultat);
                    PrviBroj = Rezultat;
                }
                if (Operacija == "*")
                {
                    Rezultat = (PrviBroj * DrugiBroj);
                    _rezultat.textBox1.Text = Convert.ToString(Rezultat);
                    DrugiBroj = Rezultat;
                }
                if (Operacija == "/")
                {
                    Rezultat = (PrviBroj / DrugiBroj);
                    _rezultat.textBox1.Text = Convert.ToString(Rezultat);
                    PrviBroj = Rezultat;
                }
            }
        }



        private void plus_Click_1(object sender, EventArgs e)
        {
            if (double.TryParse(_rezultat.textBox1.Text, out Rezultat1))
            {
                PrviBroj = Convert.ToDouble(_rezultat.textBox1.Text);
                _rezultat.textBox1.Text = "0";
                Operacija = "+";
            }
            var f = new Kalkulator();
            f.Obracunajevent += obracunaj_event;
            f.Show();
        }

        private void minus_Click_1(object sender, EventArgs e)
        {
            if (double.TryParse(_rezultat.textBox1.Text, out Rezultat1))
            {
                PrviBroj = Convert.ToDouble(_rezultat.textBox1.Text);
                _rezultat.textBox1.Text = "0";
                Operacija = "-";
            }
            var f = new Kalkulator();
            f.Obracunajevent += obracunaj_event;
            f.Show();
        }

        private void puta_Click_1(object sender, EventArgs e)
        {

            if (double.TryParse(_rezultat.textBox1.Text, out Rezultat1))
            {
                PrviBroj = Convert.ToDouble(_rezultat.textBox1.Text);
                _rezultat.textBox1.Text = "0";
                Operacija = "*";
            }
            var f = new Kalkulator();
            f.Obracunajevent += obracunaj_event;
            f.Show();
        }


        private void podijeli_Click_1(object sender, EventArgs e)
        {
            if (double.TryParse(_rezultat.textBox1.Text, out Rezultat1))
            {
                PrviBroj = Convert.ToDouble(_rezultat.textBox1.Text);
                _rezultat.textBox1.Text = "0";
                Operacija = "/";
            }
            var f = new Kalkulator();
            f.Obracunajevent += obracunaj_event;
            f.Show();
        }


        private void ocisti_Click_1(object sender, EventArgs e)
        {
            _rezultat.textBox1.Text = "0";
        }


    }
}

这是第三位:结果

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Kalkulator
{
    public partial class Rezultat : Form
    {
        public Rezultat()
        {
            InitializeComponent();
        }

    }
}

所以这是我的主要问题,如何将这三个连接起来,我想与事件和代表联系,但我不知道要这样做...谢谢!

1 个答案:

答案 0 :(得分:-1)

您可以通过以下方式实现您想要的东西:

  1. 创建 Main 表单( MdiParent
  2. 在“属性”窗口中,将 IsMdiContainer 属性设置为 true
  3. 创建您的表单
  4. 初始化子窗体时,应以1-s步的方式将其 MdiParent 属性设置为 Main 窗体。

小写代码:

public partial class MainForm : Form
{
    private Child1Form child1 = null;

    public MainForm()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (child1 == null)
        {
            child1 = new Child1Form();
            child1.MdiParent = this;
            child1.Show();
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (child1 != null)
        {
            child1.Close();
            child1.Dispose();
            child1 = null;
        }
    }
}

有关更多信息,请阅读this article,然后再对。