我下面的 document all 是完成简单的“四则运算”:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace SimpleCalculator
{
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent();
} private void btnCompute_Click (object sender, EventArgs e)
{
int i1; //存储第一个操作符的值.
int i2; //存储第二个操作符的值.
int result = 0; //存储操作的结果.
string sText01 = textBox1.Text; //接收textBox1中的信息。
string sText02 = textBox2.Text; //接收textBox2中的信息。
//如果textBox1中的string类型不能转换成int类型,则报错.
if (!int.TryParse(sText01, out i1) )
{
MessageBox.Show("第一个操作数的格式不正确!");
return; //程序退出.
}
//如果textBox2中的string类型不能转换成int类型,则报错.
if (!int.TryParse(sText02, out i2))
{
MessageBox.Show("第二个操作数的格式不正确!");
return; //程序退出.
}
//获取用户选择操作符的信息,转换车string类型.
string operatorCheck = Convert.ToString(cboxOperator.SelectedItem);
//计算四则运算.
switch (operatorCheck)
{
case "+" :
result = i1 + i2;
break;
case "-":
result = i1 - i2;
break;
case "*":
result = i1 * i2;
break;
case "/":
//当被除数为0时,报错.
if (0 == i2)
{
MessageBox.Show("被除数不能为0!");
return;
}
result = i1 / i2;
break;
default:
MessageBox.Show("Unkown Operator!");
break;
}
txtResult.Text = Convert.ToString(result) ; //输出结果.
//MessageBox.Show(cboxOperator.SelectedItem.ToString());
//MessageBox.Show(cboxOperator.SelectedText.ToString());
//MessageBox.Show(cboxOperator.SelectedValue.ToString());
//MessageBox.Show(cboxOperator.SelectedIndex.ToString());
} private void Form1_Load(object sender, EventArgs e)
{
string s1 = "+";
string s2 = "-";
string s3 = "*";
string s4 = "/";
cboxOperator.Items.Add(s1);
cboxOperator.Items.Add(s2);
cboxOperator.Items.Add(s3);
cboxOperator.Items.Add(s4);
}
}
}我问的问题很简单,请问我在"Form1_Load(object sender, EventArgs e)"这个方法中添加内容 和 我在代码的外部(即在 ComboBox中的 Properties 的Item 的 Collection中直接添加,我发现是达到一样的效果的!但是我不知道他们是不是还有什么不同?
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace SimpleCalculator
{
public partial class Form1 : Form
{
public Form1 ()
{
InitializeComponent();
} private void btnCompute_Click (object sender, EventArgs e)
{
int i1; //存储第一个操作符的值.
int i2; //存储第二个操作符的值.
int result = 0; //存储操作的结果.
string sText01 = textBox1.Text; //接收textBox1中的信息。
string sText02 = textBox2.Text; //接收textBox2中的信息。
//如果textBox1中的string类型不能转换成int类型,则报错.
if (!int.TryParse(sText01, out i1) )
{
MessageBox.Show("第一个操作数的格式不正确!");
return; //程序退出.
}
//如果textBox2中的string类型不能转换成int类型,则报错.
if (!int.TryParse(sText02, out i2))
{
MessageBox.Show("第二个操作数的格式不正确!");
return; //程序退出.
}
//获取用户选择操作符的信息,转换车string类型.
string operatorCheck = Convert.ToString(cboxOperator.SelectedItem);
//计算四则运算.
switch (operatorCheck)
{
case "+" :
result = i1 + i2;
break;
case "-":
result = i1 - i2;
break;
case "*":
result = i1 * i2;
break;
case "/":
//当被除数为0时,报错.
if (0 == i2)
{
MessageBox.Show("被除数不能为0!");
return;
}
result = i1 / i2;
break;
default:
MessageBox.Show("Unkown Operator!");
break;
}
txtResult.Text = Convert.ToString(result) ; //输出结果.
//MessageBox.Show(cboxOperator.SelectedItem.ToString());
//MessageBox.Show(cboxOperator.SelectedText.ToString());
//MessageBox.Show(cboxOperator.SelectedValue.ToString());
//MessageBox.Show(cboxOperator.SelectedIndex.ToString());
} private void Form1_Load(object sender, EventArgs e)
{
string s1 = "+";
string s2 = "-";
string s3 = "*";
string s4 = "/";
cboxOperator.Items.Add(s1);
cboxOperator.Items.Add(s2);
cboxOperator.Items.Add(s3);
cboxOperator.Items.Add(s4);
}
}
}我问的问题很简单,请问我在"Form1_Load(object sender, EventArgs e)"这个方法中添加内容 和 我在代码的外部(即在 ComboBox中的 Properties 的Item 的 Collection中直接添加,我发现是达到一样的效果的!但是我不知道他们是不是还有什么不同?
winform程序里有个"分布类"的概念.你看下你的窗体类前面有个关键字partial,还有个同名.Designer文件.在编译后,这些东西都会放到一个类里面.在.Designer文件的InitializeComponent()方法里,就是你拖控件,编辑属性所做的操作.而这个方法在你窗体构造函数里.所以,当你要调用窗体时,肯定要先调用构造函数(new),然后才触发Load事件.
这就是区别吧.
而自己在Load方法里面添加,相当于在窗体加载显示前才添加.
两个效果没什么区别,都是仅执行一次.当然如果添加的东西较多的话,请考虑构造方法执行的时间,是随用随New,还是New出来后就不再New的,如果是随用随New的话,添加Item放在哪里都一样,如果是不再New的话,那么放在构造函数里会增加构造函数执行的时间,一般都会放在程序启动的时间里,而放在Load里则会增加该Form的首次显示时间,即相当于第一次ShowDialog的时间.当然以上差别可以不考虑,当添加东西较多的话,请使用多线程读取数据,当窗体需要是直接一次性添加进去即可.