黑马程序员-WinForm入门

原创 2012年03月26日 09:33:54

                     ----------------------   Windows Phone 7手机开发.Net培训    期待与您交流! ----------------------


一、认识窗口中的控件

常见控件:添加移动删除缩放

button

checkbox

label

rediobutton

textbox

 

控件名字name,Text,value属性

事件!!!!!!!!!!!

事件处理方法

控件的名字(控件的实例对象名)

 

好莱坞原则

Don’t call me,I will call you!

把事件的代码放到那,一旦事件发生就会调用

把计算的程序放到button中,

 

Messagebox.show()

Int.tryparse()

Convert.ToStringi3)对比i3.ToString()

1Messagebox.Show(“广告”);正确是方法

Messagebox.Show=广告”;错误不是属性

2、拖的控件无意间点住了,生成时报错不要直接删

 

Winform中属性方法的设置!!!!!!!!!!!

二、实例:

实例1:第一个winform程序

问好

String name=textBox.Text

This.Text=string.Format(“{0}你好”,name)

Textbox.Hide();//隐藏

 

例子2:加法计算器:

           string str1 = textBox1.Text;   

           string str2 = textBox2.Text;   

           int i1, i2;   

           if (!int.TryParse(str1, out i1))   

           //out传参前,可以不对参数初始化,out的函数会清空变量,即使变量已经赋值也不行;   

           //ref传参前,必须对参数初始化   

           {   

                MessageBox.Show("第一个数不是合法的整数");   

                return;//不要忘了return    

           }   

           if (!int.TryParse(str2, out i2))   

           {   

                MessageBox.Show("第二个数不是合法的整数");    

                return;   

           }   

           int i3 = i1 + i2;   

           textBox4.Text = Convert.ToString(i3);   

       }   

}   

 

实例3:输入邮箱地址,分别输出用户名和密码

 

先判断是否是合法的email地址,再split截取?

还是先截取然后判断是否得到的数据合法?选择此

private void button1_Click(object sender,EventArgs e)   

       {   

           string email = textBox1.Text;   

           string[] strs = email.Split('@');   

           if (strs.Length != 2)   

           {   

                MessageBox.Show("非法的email地址!");   

                return;//不要忘了return   

           }   

           textBox2.Text = strs[0];   

           textBox3.Text = strs[1];   

       }   

 

例子4:累加

private void button1_Click(object sender,EventArgs e)   

       {   

           string s1 = textBox1.Text;   

           string s2 = textBox2.Text;   

           int i1, i2;   

           if (int.TryParse(s1, out i1) == false)   

           {   

                MessageBox.Show("数字1格式错误!");   

                return;   

           }   

            if (int.TryParse(s2, out i2) ==false)   

           {   

                MessageBox.Show("数字2格式错误!");   

                return;   

           }   

           if (i1 >= i2)   

           {   

                MessageBox.Show("第二个数要大于第一个数!");    //排错技巧:在出错的地方设置断点,看相关变量的值

                return;   

           }   

           int sum = 0;   

           for (int i = i1; i <= i2; i++)   

           {   

                sum = sum + i;   

           }   

           textBox3.Text = Convert.ToString(sum);   

       }   

  

例子5:图片隐藏

private void button1_Click(object sender,EventArgs e)   

       {   

pictureBox1.Visible = true; 

           string 身份证号 =textBox1.Text;   

           //校验是否是合法的身份证号   

           string strYear = 身份证号.Substring(6,4); //18位身份证号 

           int year = Convert.ToInt32(strYear);  //Int.TryParse (str Year ,out year)也行

           if ((DateTime.Now.Year - year >= 18)==true)

           {

               pictureBox1.Visible = true;    // pictureBox1. Hide=false;貌似也行

                return;   

           }   

           else  

           {   

                MessageBox.Show("你的年龄小于18,无法查看!");   

                //pictureBox1.Visible =false;   

                return;   

           }    

       }   

 

例子6: 滚动窗口

Substring的用法:

 

private void button1_Click(object sender,EventArgs e)   

       {   

           string str = textBox1.Text;   

           char first = str[0];   

           string 剩下 =str.Substring(1);   

           textBox1.Text = 剩下 + first;   

       }   

  

       private void button2_Click(object sender, EventArgs e)   

       {   

           string str = textBox1.Text;   

           char last = str[4];   

           string 剩下 =str.Substring(0,4);   

           textBox1.Text = last+剩下;   

       }   

 

控件一定要起一个有意义的名字!!!!!!!!!

 

实例7:练习文本框使用:

 

登陆界面登陆错误三次退出程序,假设用户名密码是admin

888888,不区分大小写,

局部变量和类变量

退出程序 Close( )或者Application.Exit()

 

namespace 登录界面 

{   

   public partial class Form1 : Form   

   {    

       private int ErrorTimes = 0;//错误的次数    //局部变量和类变量的区别

                              //想让程序记住设置了一个字段,类的变量

                              //form1的字段窗口是form1的对象

                              //只要窗口不关闭,字段的值就会一直保持

       public Form1()   

       {   

           InitializeComponent();   

       }   

  

       private void button1_Click(object sender, EventArgs e)    //附加时间

       {   

           //方法一    AppendText只会附加不取值

           textBox4.AppendText(DateTime.Now.ToString()+"\n"); 

           //方法二    方法二的缺点:取值再附加回去影响速度

           //textBox4.Text = textBox4.Text+ DateTime.Now.ToString() +"\n" ;   

       }   

  

       private void login_Click(object sender, EventArgs e)    //登录

       {   

           string username = txtUserName.Text.Trim();//Trim忽略大小写   

           string password = txtPassWord.Text;   

           if (username.Equals("admin",StringComparison.   

                OrdinalIgnoreCase) &&password == "888888")   

           {   

                MessageBox.Show("登录成功!");   

           }   

           else  

           {    //局部变量每次运行完毕变量的值都会被销毁,下次在运行会重新初始化,而类字段,只要是一个对象,那么只要对象不销毁,就会一直保持对象的字段

                

                 //int i=0;//局部变量每次触发该程序就赋为0

//i++;

//if(i>=3)

                ErrorTimes++;//错误次数加1   

                if (ErrorTimes > 3)   

                {   

                    MessageBox.Show("错误次数过多,程序即将退出!");   

                    Application.Exit();    //重新打开再次错误三次涉及数据库

                }   

                MessageBox.Show("登录失败!");   

           }   

       }   

修改密码界面有旧密码新密码重复新密码,假设就密码为888888两次输入的新旧密码必须和旧密码不一样,并且两次输入的新密码必须一致

 

       private void btnModify_Click(object sender, EventArgs e)  //修改密码 

       {   

           string oldpassword = txtUserName.Text;//取旧密码   

            string newpassword = txtPassWord.Text;   

           string newpassword2 = newPassWord2.Text;   

           if (oldpassword != "888888")   

           {   

                MessageBox.Show("旧密码错误!");   

                return;   

           }   

           if (newpassword != newpassword2)   

           {   

                MessageBox.Show("两次输入的新密码不一致!"); //为什么会有再次确认密码?校验!  

                return;   

           }   

           if (newpassword == oldpassword)   

           {    

                MessageBox.Show("旧密码和新密码不能一样!");   

                return;   

           }   

           MessageBox.Show("修改成功!");   

       }   

   }   

}   

实例8、统计成绩

在多行文本框中输入多行“姓名=密码”格式的数据,

要求输出成绩的最高的学生的姓名和成绩

       private void btnResult_Click(object sender, EventArgs e)   

       {   

           //string s = txt成绩.Text;   //方法1:按照\r\n进行split   

           string[] lines=txt成绩.Lines;//方法2   

           string maxName="";   

           int maxScore = -1;   

           foreach (string line in lines)    //遍历数组

           {   

                string[] strs =line.Split('=');   

                string name=strs[0];   

                string strScore=strs[1];   

                int score =Convert.ToInt32(strScore);   

               if (score >maxScore)   

                {   

                    maxName = name;   

                    maxScore = score;   

                }   

           }   

           MessageBox.Show(string.Format("{0}是第一名,成绩是{1}",   

                maxName,maxScore));   

       }   

 

如果连入数据库就是从数据库中取值,或者从文件中读取

实例9、下拉列表

(如何禁止用户编辑只限于选的内容不能输入)

ComboBox

简单的四则运算

private void comboBox1_Click(object sender, EventArgs e)   

       {   

           MessageBox.Show(Convert.ToString   

                (comboBox1.SelectedIndex));//第几项   

           MessageBox.Show(Convert.ToString   

               (comboBox1.SelectedValue));   

           MessageBox.Show(Convert.ToString   

                (comboBox1.SelectedText));//数据库中将用到   

           MessageBox.Show(Convert.ToString   

                (comboBox1.SelectedItem));//选中的项的内容   

       }   

       private void comboBox1_SelectedIndexChanged(objectsender, EventArgs e)   

       {   

           MessageBox.Show(Convert.ToString(comboBox1.SelectedItem));   

       }   

  

       private void btnResult_Click(object sender, EventArgs e)   

       {   

           string str1 = txtNumber1.Text;   

           string str2 = txtNumber2.Text;   

           int i1 = Convert.ToInt32(str1);   

           int i2 = Convert.ToInt32(str2);   

           int result;   

  // 选中项的序号,没有任何选中的时候是-1,否则是选中的序号(从0开始)

           switch (cb操作符.SelectedIndex)    //响应选择改变事件

           {   

                case 0://+   

                    result = i1 + i2;   

                    break;   

                case 1://-   

                    result = i1 - i2;   

                    break;   

                case 2://*   

                    result = i1 * i2;   

                    break;   

               case 3:// /   

                    if (i2 == 0)   

                    {   

                        MessageBox.Show("0不能为除数!");   

                        return;   

                    }   

                    result = i1 / i2;   

                   break;   

                default:   

                    throw new Exception("未知的运算符");   

           }   

           txtResult.Text = Convert.ToString(result);   

       }   

实例10、省市选择   

   SelectedIndex练习

     private void cb省_SelectedIndexChanged(object sender,EventArgs e)  //只是值的设定

       {   

           cb市.Items.Clear();//清空旧数据!!!!    

           string 省 =Convert.ToString(cb省.SelectedItem);   

           if(省=="山东")                

{   

                cb市.Items.Add("潍坊");   

                cb市.Items.Add("临沂");   

                cb市.Items.Add("青岛");   

           }   

           if (省 == "河南")   

           {   

                cb市.Items.Add("郑州");   

                cb市.Items.Add("三门峡");   

                cb市.Items.Add("洛阳");   

           }   

           if (省 == "湖南")   

           {   

                cb市.Items.Add("长沙");   

                cb市.Items.Add("衡阳");   

                cb市.Items.Add("邵阳");   

           }   

       }   

   }   

如果连入数据库就是从数据库中取值,或者从文件中读取

 

 

                     ----------------------   Windows Phone 7手机开发.Net培训    期待与您交流! ----------------------

 

                                     详情请查看:http://edu.csdn.net/heima

 

 

 

WinForm入门--高级控件(简)

高级控件
  • xiaojunjor
  • xiaojunjor
  • 2017年06月06日 14:48
  • 897

C#入门12.1——创建Winform程序

RAD Visual Studio是一套完整的开发工具集 RAD工具(Rapid Application Development)//rapid=迅速 创建用户界面时,把控件从工具箱拖放到窗体上...
  • QPC908694753
  • QPC908694753
  • 2016年09月06日 12:49
  • 585

Winform基础入门(一)

l       概念和基础 l       常用的控件及其作用 l       向文本框添加时间和控件ComboBox l       MessageBox类和窗体的一些属性事件 l       Ta...
  • u011593927
  • u011593927
  • 2013年10月13日 14:01
  • 4083

WinForm入门_编写“记事本”

学习不是目的,创造才是目的。学习真正有效的方法之一:学以致用 构建一个软件系统(类似于搭积木) 具体开发的过程就像是拼图(将各软件基本构造块组合) “记事本”的基本功能: 自定...
  • ROCKMOSTER
  • ROCKMOSTER
  • 2015年06月24日 21:18
  • 1203

WinForm入门--基础控件(简)

基础控件
  • xiaojunjor
  • xiaojunjor
  • 2017年06月06日 09:59
  • 613

C#图形界面入门 Winform

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新...
  • mixiu888
  • mixiu888
  • 2017年12月16日 15:42
  • 11205

.net开发笔记(十三) Winform常用开发模式第一篇

上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了“异步编程”这个概念,前前后后所有...
  • dyllove98
  • dyllove98
  • 2013年07月02日 21:01
  • 2077

推荐10本C#编程的最佳书籍

本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! C#和.NET非常受全球开发人员的追捧和热爱。书籍是人类进步的阶梯。想要学习C# ?这里有10本学习C#编...
  • yi412
  • yi412
  • 2017年04月10日 11:42
  • 2563

Winform基础入门(二)

l      treeView控件 l      代码生成控件 l      主菜单与上下文菜单 l      托盘的实现 1.textBox1.Update();  使桌面快速重绘   Stopwa...
  • u011593927
  • u011593927
  • 2013年10月19日 16:07
  • 1046

Log4net入门使用(转)

简介 几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。 经验表明,...
  • suixufeng
  • suixufeng
  • 2015年12月11日 09:22
  • 7539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员-WinForm入门
举报原因:
原因补充:

(最多只允许输入30个字)