因为毕业设计要用到Winform编程,所以计划用一个月的时间学一下,这篇笔记里包含了上机实操和代码理论两个部分,欢迎前来交流~
另:
此篇为C#Winform自学合集第四篇,接上篇(三)
菜单是软件界面的一个重要组成部分,它描述了一个软件的大致功能和风格,所以在程序设计中处理好,设计好菜单是非常重要的。
菜单的本质就是提供了将命令分组的一致方法,使得用户易于访问,通过支持使用访问键启用键盘快捷方式,达到快速操纵软件系统的目的。
实验目的:
建立一个简单的菜单。
实验步骤:
1)建立Winform窗体并从工具箱的菜单和工具栏中拖放一个MenuStrip控件放到窗体上;
2)可以直接单击MenuStrip控件填写主菜单及子菜单名称,但是需要注意命名菜单时避免直接录入汉字,因为直接键入汉字命名菜单,则该菜单项的Name属性将出现汉字,不利于C#编程。
(也可以在输入text之后更改一下Name,更方便)
3)虽然直接单击MenuStrip控件进行输入也不会出现代码错误,但是选择该控件的Item属性,在展开的项集合编辑器中直接设置的方法更好。
4)如果在命名时在text属性处键入“文件(&N)”将会产生“文件(N)"的效果,&被认为是快捷键的字符,运行时直接按Alt+N键就可以执行。
5)设置每个菜单项的ShortcutKeys属性。每个菜单项都有一个ShortKeys属性,该项属性为用户自定义的快捷菜单组合键设置项。但注意在进行设置时一方面要根据Windows操作系统的常用快捷键菜单设置,如退出一般是Alt+E键,打开一般是Alt+O键,另一方面至少需要一项修饰符和键组合,否则将出错;
6)在进行分割的时候,可以选择Separator选项进行功能性的分割。
窗体美化一般通过第三方皮肤文件完成,动态链接库文件一般是.dll文件,DotNetSkin.dll文件使用的皮肤文件是.skn,而另一个IrisSkin2.dll文件使用的是.ssk文件。**
向工具箱中倒入两个文件,拖拽到界面上即可。
进行编码如下:
public Form1()
{
InitialzeComponent();
//SSK皮肤
string path=Environment.CurrentDiectory+"SSK皮肤\\MacOS\\MacOS.ssk";
this.skinEnging1.SkinFile="*.ssk";
//SKN皮肤
string path = Envionment.CurrentDircetory+"\\skn皮肤\\LE4-DEFAULT.skn";
this.skinUI1.SkinFile= path;
}
基本功能要求:
禁止输入空信息,否则弹出对话框禁止;只有用户名和密码都是admin时,弹出正确对话框,否则弹出对话框显示错误信息。
代码实现:
【Form2全代码】
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 staff2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == string.Empty || textBox2.Text == string.Empty)
{
MessageBox.Show("消息禁止为空");
textBox1.Clear();
textBox2.Clear();
textBox2.Focus();
}
else if (textBox1.Text == "admin" && textBox2.Text == "admin")
{
MessageBox.Show("恭喜您成功登录");
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误\n请重新输入");
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox1.Focus();
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
}
}
实验结果:
①单击作业列表
②选择联系一:用户登录
③输入用户信息
如果输入正确
如果输入错误
基本功能要求:
1)单击“显示信息”按钮时,下拉列表显示软件部、硬件部、财务部和人事部,并在下面通过Label控件显示行数的统计信息;
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 staff2
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//向列表添加信息
this.listBox1.Items.Add("软件部");
this.listBox1.Items.Add("硬件部");
this.listBox1.Items.Add("财务部");
this.listBox1.Items.Add("人事部");
listBox1.Show();
//显示行数
label1.Text = "已经添加了" + listBox1.Items.Count + "条记录.";
label1.Show();
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}
实验结果:
2)单击“插入信息”按钮时,可以在选中的某行后插入新的内容为“插入行”信息,并在下面通过Label控件重新显示行数的统计信息。
先将ListBox的Enable属性设置为FALSE,然后在“插入信息”按钮部分输入以下源代码,将Enable设置为true,然后再一次统计。
【不会,不知道怎么让用户在界面里插入信息】
private void button2_Click(object sender, EventArgs e)
{
listBox1.Enabled = true;
label1.Text = "已经添加了" + listBox1.Items.Count + "条记录。";
}
FormX = newFrom FromX();
newForm.Show();
//如果打开这个新窗体之后想隐藏父窗体,则:
this.hide();
//显示行数
label1.Text = "已经添加了" + listBox1.Items.Count + "条记录.";
label1.Show();