揭开winform的神秘面纱
记得刚开始学习的时候就听到winform这个名词,那时候觉得很陌生,很新鲜,一种高大上的感觉……等到真的接触并认识了Winform才知道对于我们来说这并不是新鲜的也不陌生,看到界面后恍然大悟一种亲切感油然而生,感觉跟VB很相似,里面的一些控件、属性、事件等都很相像。
附图一张看看有没有很熟悉:
几个亲切的小例子
1. 生日选择器
代码:
<span style="font-family:KaiTi_GB2312;">namespace _03生日选择器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
int yearcmd = DateTime.Now.Year;//获得当前的年份
for (int i = yearcmd ; i >=1949; i--)
{
cmbYear.Items.Add(i +"年");
}
}
private void cmbYear_SelectedIndexChanged(object sender, EventArgs e)
{
cmbMonth.Items.Clear();//清空原来添加的月份
for (int i = 1; i <=12; i++)
{
cmbMonth .Items .Add (i +"月");//把月份添加到第二个cmb控件中
}
}
private void cmbMonth_SelectedIndexChanged(object sender, EventArgs e)
{
cmdDay.Items.Clear();
string strYear = cmbYear.SelectedItem.ToString().Split('年')[0];//获取当前选中年份
string strMonth = cmbMonth.SelectedItem.ToString().Replace("月","");//获取当前选中的月份
int year = Convert.ToInt32(strYear );//把年份转为int类型
int month = Convert.ToInt32(strMonth);//把月份转为int类型
int day = 0;//定义变量用来存日期
if (month ==2)
{
if (year %400==0||year%4==0&&year %100!=0)
{
day = 29;
}
else
{
day = 28;
}
}
else
{
switch (month )
{
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
default :
day =31;
break ;
}
}
for (int i = 1; i <=day ; i++)
{
cmdDay .Items .Add (i );
}
}
}
}</span>
用到的控件:ComboBox;既然是生日选择器年份不能超过当然年份,需要考虑获取当前的年份,选完年份之后就得选月份因为如果第二个控件不清空,那么选择一次年份就会加载一次月份,造成月份的重复,而对于天数的考虑1、3、5、7、8、10、12月都是31天,4、6、9、11月是30天,2月是最麻烦的一个月需要考虑这个月是28天还是29天这就用到了之前学的那个小例子“闰年判断”,综合考虑一个生日选择器的小例子就实现了!
2. 跑马灯
代码:
<span style="font-family:KaiTi_GB2312;font-size:18px;">namespace _07一个小组件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick_1(object sender, EventArgs e)
{
label1.Text = label1.Text.Substring(1) + label1.Text[0];
label2.Text = label2.Text.Substring(label2.Text.Length - 1) + label2.Text.Substring(0, label2.Text.Length - 1);
}
}
}</span>
实现:运行效果是实心五角星和空心五角星交替如同五角星在运动;
用到的控件:2个Label控件,1个timer控件,一开始没有实现动态效果感觉哪儿都没有错,后来发现是timer属性的Enable属性是False,应该是True,timer控件的Enable默认是false用的时候记得改为True;
总结
这几个例子的实现过程是对控件和属性熟悉的过程,学习这里要时刻用到对比的学习方法,这样既能复习VB的相关知识又能更好的学习C#!