设计一个WinForm程序,利用方法的重载计算“圆”、“矩形” 和“三角形”的图形的面积。
(1)“TabControl”控件用于显示多个选项卡,这些选项卡类似于笔 记本中的分隔卡和档案柜文件夹中的标签。选项卡中可包含图片和其他控 件。可以使用该选项卡控件来生成多页对话框,此外,TabControl还可以用 来创建用于设置一组相关属性的属性页。TabControl的最重要的属性是 TabPages,该属性包含单独的选项卡。
(2)“Math”类。为三角函数、对数函数和其他通用数学函数提供 常数和静态方法。在“System”命名空间中。例中“Math.PI”是获得圆周 率,“Math.Sqrt”是计算平方根。
(3)字符串类型的“IndexOf”方法。报告String或一个或多个字符在 此字符串中的第一个匹配项的索引
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 方法重载练习{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void textBox5_TextChanged(object sender, EventArgs e){}private void btn1_Click(object sender, EventArgs e){CGraph cgraph = new CGraph();if(tabControl1 .SelectedIndex ==0&&textBox1.Text .Trim ()!=\" \"){if(textBox1 .Text .IndexOf(\'.\') != -1){double r = double.Parse(textBox1.Text);lbl7.Text = \"高精度圆的面积是:\" + cgraph.calculate(r);}else{double r = double.Parse(textBox1.Text);lbl7.Text = \"低精度圆的面积是:\" + Math .Round (cgraph.calculate(r),2);}}else if (tabControl1.SelectedIndex == 1&&textBox2 .Text .Trim ()!=\" \"&&textBox3 .Text .Trim ()!=\" \"){double r = double.Parse(textBox2.Text);double c = double.Parse(textBox3.Text);lbl7.Text = \"矩形的面积是:\" + cgraph.calculate(r, c);}else if (tabControl1.SelectedIndex==2&&textBox4 .Text .Trim ()!=\" \"&&textBox5.Text .Trim ()!=\" \"&&textBox6 .Text .Trim ()!=\" \"){double r = double.Parse(textBox4.Text);double c = double.Parse(textBox5.Text);double v = double.Parse(textBox6.Text);if(r+c>v&&r+v>c&&c+v>r){lbl7.Text = \"三角形的面积是:\" + cgraph.calculate(r, c,v);}else{MessageBox.Show(\"输入的三边数据构不成三角形\");}}}private void btn2_Click(object sender, EventArgs e){if(tabControl1 .SelectedIndex == 0){textBox1.Text = \" \";lbl7.Text = \" \";}else if(tabControl1 .SelectedIndex == 1){textBox2.Text = \" \";textBox3.Text = \" \";lbl7.Text = \" \";}else if(tabControl1 .SelectedIndex == 2){textBox4.Text = \" \";textBox5.Text = \" \";textBox6.Text = \" \";lbl7.Text = \" \";}}public class CGraph{public CGraph(){}public double calculate(double a){double area = Math.PI * a * a;return area;}public double calculate(double a,double b){double area = a * b;return area;}public double calculate(double a,double b,double c){double p = (a + b + c) / 2;double area = Math.Sqrt(p * (p - a) * (p - b) * (p - c));return area;}}}}
注意:按【Ctrl+F5】组合键运行程序,输入圆的半径“5”,单击“计算”按钮,结 果如图3.12所示,单击“清空”按钮后再输入圆的半径“5.0”,计算结果如图3.13 所示。获得的差异结果是利用了形参类型差异而调用了不同的方法。读者可以试试 计算其他图形的面积。这里需要注意的是,在输入三角形边长时,要输入能构成三 角形的边长。