当前位置:   article > 正文

winform应用程序初识——常见组件学习_winform 没有designer.cs 所有初始化的东西都在main form中

winform 没有designer.cs 所有初始化的东西都在main form中

什么是winform应用程序?

winform应用程序是一种只能客户端技术,我们可以使用winform应用程序帮助我们获得信息或者传输信息等。(其实就是桌面应用程序)

winform做UI说实话很丑,不过有一名做winformUI的语言叫做XAML

在winform中,Main函数同样也是程序执行的主入口,和控制台程序是一样的。和控制台不同的一点是,我们在控制台中创建的对象,都存在内存中,并不能实际看见,但是winform中,我们创建的对象都清晰的展现在我们眼前。

例如这个窗体,就是主函数中创建的Form对象。在main函数中创建的窗体对象,我们称之为这个窗体应用程序的主窗体。也就意味着,当你将主窗体关闭后,整个应用程序都关闭了。

 

那么如果我们想实现一些功能,需要写一些后台代码,来控制UI层。这些后台代码就写在Form1.cs中(我用的版本这个文件双击会快速访问到前台,后台页面应该是被隐藏了,不过一般给控件写功能的时候,都能自动打开。或者右键选择查看代码/设计器,都可以快速切换)

 designer.cs是我们在设计窗体的时候,自动生成的代买,.resk这个是资源,资源文件都存在这里。我们是写后台程序的,所以一般操作的都是Form1.cs这个文件。

控件的属性和事件

当我们拖一个控件的时候,实际上就是在new一个这个类的对象。

designer里面有一个Initializecomponent的方法,这个方法就是在初始化我们的窗体对象,也就是给窗体以及我们拖过来的控件对象赋值。

不过控件多了,代码也多了,不好找,可以通过属性栏,给这个控件赋值。(f4或者右键)

属性

Name:在后台要获得前台的控件,需要Name属性

Visible:指示一个控件是否可见

Enabled:指示一个控件是否可用

事件;发生一件事

注册事件:双击控件注册(这样注册都是控件默认选中的内个事件)

触发事件:(看你怎么设置了,点击触发还是怎么触发)


基本控件

Button控件:一个按钮

Label控件:文本显示控件

TextBox控件:文本输入框控件

        ScrollBars属性:拖动条显示

Timer控件:在指定的时间间隔内做一件指定的事情

        Interval属性:间隔秒数(毫秒)

用上面几个组件做一个简单的记事本应用

在程序加载的时候,取消文本框的自动换行,以及让两个按钮和文本框隐藏
点击登录,判断是否登陆成功
自动换行功能
保存文本:FileStream

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3. txtWords.WordWrap = false;
  4. btnChange.Visible = false;
  5. btnSave.Visible = false;
  6. txtWords.Visible = false;
  7. }
  8. /// <summary>
  9. /// 判断是否登录成功
  10. /// </summary>
  11. /// <param name="sender"></param>
  12. /// <param name="e"></param>
  13. private void btnSignIn_Click(object sender, EventArgs e)
  14. {
  15. string name = txtName.Text.Trim();
  16. string pwd = txtPwd.Text;
  17. if(name=="admin"&&pwd=="88888")
  18. {
  19. btnChange.Visible = true;
  20. btnSave.Visible = true;
  21. txtWords.Visible = true;
  22. lblName.Visible = false;
  23. lblPwd.Visible = false;
  24. btnSignIn.Visible = false;
  25. btnReset.Visible = false;
  26. txtName.Visible = false;
  27. txtPwd.Visible = false;
  28. }
  29. else
  30. {
  31. MessageBox.Show("登录失败");
  32. txtName.Clear();
  33. txtPwd.Clear();
  34. txtName.Focus();
  35. }
  36. }
  37. /// <summary>
  38. /// 重置
  39. /// </summary>
  40. /// <param name="sender"></param>
  41. /// <param name="e"></param>
  42. private void btnReset_Click(object sender, EventArgs e)
  43. {
  44. txtName.Clear();
  45. txtPwd.Clear();
  46. txtName.Focus();
  47. }
  48. /// <summary>
  49. /// 自动换行
  50. /// </summary>
  51. /// <param name="sender"></param>
  52. /// <param name="e"></param>
  53. private void btnChange_Click(object sender, EventArgs e)
  54. {
  55. //当前是否自动换行
  56. if (btnChange.Text == "自动换行")
  57. {
  58. txtWords.WordWrap = true;
  59. btnChange.Text = "取消自动换行";
  60. }
  61. else if(btnChange.Text=="取消自动换行")
  62. {
  63. txtWords.WordWrap = false;
  64. btnChange.Text = "自动换行";
  65. }
  66. }
  67. /// <summary>
  68. /// 保存
  69. /// </summary>
  70. /// <param name="sender"></param>
  71. /// <param name="e"></param>
  72. private void btnSave_Click(object sender, EventArgs e)
  73. {
  74. using(FileStream fsWrite=new FileStream(@"E:\Csharp Study Work\WindowsFormsApp1\new.txt",FileMode.OpenOrCreate,FileAccess.Write))
  75. {
  76. string str = txtWords.Text.Trim();
  77. byte[] buffer = System.Text.Encoding.Default.GetBytes(str);
  78. fsWrite.Write(buffer, 0, buffer.Length);
  79. }
  80. MessageBox.Show("保存成功");
  81. }

CheckBox控件:多选控件

RadioBotton控件:单选控件,默认情况下,所有单选按钮只能从中选一个,不过可以使用groupbox控件进行分组

GroupBox控件:容器里面的一个控件,可以用来分组

        Checked属性:指示这个控件是否处于选中状态

老师学生登录

  1. private void btnSignin_Click(object sender, EventArgs e)
  2. {
  3. if (rdoStudent.Checked || rdoTeacher.Checked)
  4. {
  5. string name = txtName.Text.Trim();
  6. string pwd = txtPwd.Text;
  7. if (rdoStudent.Checked)//选学生
  8. {
  9. if (name == "student" && pwd == "student")
  10. {
  11. MessageBox.Show("学生登录成功");
  12. }
  13. else
  14. {
  15. MessageBox.Show("登录失败");
  16. txtName.Clear();
  17. txtPwd.Clear();
  18. txtName.Focus();
  19. }
  20. }
  21. else//选老师
  22. {
  23. if (name == "teacher" && pwd == "teacher")
  24. {
  25. MessageBox.Show("老师登录成功");
  26. }
  27. else
  28. {
  29. MessageBox.Show("登录失败");
  30. txtName.Clear();
  31. txtPwd.Clear();
  32. txtName.Focus();
  33. }
  34. }
  35. }
  36. else
  37. {
  38. MessageBox.Show("请选择登录身份");
  39. }
  40. }

 WebBrowser组件:浏览器组件,显示浏览器页面

        URL属性:指定web浏览器控件导航到的url

        Uri类:把字符串转换成能被URL访问的格式

PictureBox控件:图片显示控件

        Image属性:显示图片的属性

Directory类

这是一个静态类,他可以操作文件夹,目录。

创建文件夹

Directory.CreateDirectory(@"");

删除文件夹

Directory.Delete(@"",true);

剪切文件夹

Directory.Move(@"");

获得指定文件夹下的所有文件的全路径

string[] path = Directory.GetFiles(@"","*.jpg");

获得指定文件夹下的所有文件夹的全路径

string[] path = Directory.GetDirectories(@"");

判断指定文件夹是否存在

            if(Directory.Exists(@""))
            {
                for (int i = 0; i < 100; i++)
                {
                    Directory.CreateDirectory(@"" + i);
                }
            }

MDI窗体设计

首先确定一个父窗体,将Ismdicontainer设置为true。然后创建子窗体,并且设置他们的父窗体。

  1. private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
  2. {
  3. Form2 frm2 = new Form2();
  4. frm2.MdiParent = this;
  5. frm2.Show();
  6. Form3 frm3 = new Form3();
  7. frm3.MdiParent = this;
  8. frm3.Show();
  9. Form4 frm4 = new Form4();
  10. frm4.MdiParent = this;
  11. frm4.Show();
  12. }
  13. private void 横向排列ToolStripMenuItem_Click(object sender, EventArgs e)
  14. {
  15. LayoutMdi(MdiLayout.TileHorizontal);
  16. }
  17. private void 纵向排列ToolStripMenuItem_Click(object sender, EventArgs e)
  18. {
  19. LayoutMdi(MdiLayout.TileVertical);
  20. }

ComboBox控件:下拉框控件,这个下拉框可以看做是一个集合。

        DropDownStyle属性:下拉框的外观功能(能否自己输入数据)

日期选择器

  1. private void Form1_Load(object sender, EventArgs e)
  2. {
  3. //程序加载的时候,将年份添加到下拉框
  4. //获得当前的年份
  5. int year = DateTime.Now.Year;
  6. for (int i = year; i >=1949 ; i--)
  7. {
  8. cboYear.Items.Add(i + "年");
  9. }
  10. }
  11. /// <summary>
  12. /// 年份发生改变,加载月份
  13. /// </summary>
  14. /// <param name="sender"></param>
  15. /// <param name="e"></param>
  16. private void cboYear_SelectedIndexChanged(object sender, EventArgs e)
  17. {
  18. cboMonth.Items.Clear();
  19. cboDays.Items.Clear();
  20. for (int i = 1; i <= 12; i++)
  21. {
  22. cboMonth.Items.Add(i + "月");
  23. }
  24. }
  25. /// <summary>
  26. /// 月份改变,加载天
  27. /// </summary>
  28. /// <param name="sender"></param>
  29. /// <param name="e"></param>
  30. private void cboMonth_SelectedIndexChanged(object sender, EventArgs e)
  31. {
  32. cboDays.Items.Clear();
  33. int day = 0;//存天数
  34. //获得月份,年份
  35. string strMonth = cboMonth.SelectedItem.ToString().Split(new char[] {'月'},StringSplitOptions.RemoveEmptyEntries)[0];
  36. string strYear = cboYear.SelectedItem.ToString().Split(new char[] { '年' }, StringSplitOptions.RemoveEmptyEntries)[0];
  37. int year = Convert.ToInt32(strYear);
  38. int month = Convert.ToInt32(strMonth);
  39. switch (month)
  40. {
  41. case 1:
  42. case 3:
  43. case 5:
  44. case 7:
  45. case 8:
  46. case 10:
  47. case 12:day = 31;
  48. break;
  49. case 2:
  50. if((year%400==0)||(year%4==0&&year%100!=0))
  51. {
  52. day = 29;
  53. }
  54. else
  55. {
  56. day = 28;
  57. }
  58. break;
  59. default:day = 30;
  60. break;
  61. }
  62. for (int i = 1 ; i <= day; i++)
  63. {
  64. cboDays.Items.Add(i + "日");
  65. }
  66. }

ListBox控件:列表控件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/137848
推荐阅读