目录:1.引入:窗体方法:1.一个窗口跳到另一个窗口如何实现2.隐藏窗体3.关闭窗体
2.窗体事件
3.窗体属性
4.RadioButton,CheckBox,菜单和工具栏:[Menustrip,ToolStrip,StatuStrip,ContextMenuStrip,],ListBox,ComboBox,ListView,CheckedListBox
补充:
question:怎么调或用一个控件里的内容,如上一次讲的textbox,TextBox1输入的内容为textbox.Text[Text表示内容]
开始:
1.1.一个窗口跳到另一个窗口如何实现
资源方案解决管理器->右键windowsFormApp1->添加->windows窗体->添加;
会出来一个form2;[question:如何从form1跳到form2?]
窗体打开窗体方法:
窗体对象名.Show(): Form.Show();
窗体对象名.ShowDialog(): Form.ShowDialog();
窗体隐藏:窗体对象名.Hide():
窗体关闭:窗体对象名.Close():
eg.
在form1建立个button[Name:btnNext,Text:下一步],双击你建立的button控件,进入写代码区;
一按下form1中的button[下一步]会产生出现form2的事件:
private void btnNext_Click(object sender, EventArgs e)
{ var frm= new Form2();
frm.Show();//form2的窗口跳出来,并可以更改form1中的东西
// frm.ShowDialog();//form2的窗口跳出来,不可以更改form1中的东西,必须关掉form2才可以更改form1中的东西
this.Hide();//表示隐藏form1.;
this.Close();//表示彻底关闭form1;
}
question:如何在form2中修改form1中的东西,?
解决方法:传递参数Form.Show/ShowDIalog(this);
eg.在form2中点击button,form1中的label内容就变成123:
在form2中加button,form1中加个label,
//在form1中
private void btnNext_Click(object sender, EventArgs e)
{ //点击form1中的"下一步"按钮"产生的事件
var frm= new Form2();
frm.Show(this);//传递参数
//this.Hide();
}
//在form2中[如下]
private void button1_Click(object sender, EventArgs e)
{
(this.Owner as Form1).lbl1.Text = "123";//form1是持有者,form1中的label1中的内容在form2中可以改成123
//但是在此之前需要在form.designed.cs将form1中的label由private改成public.
}
2.窗体事件
(1)Load(加载)初始化操作.
private void Form1_Load(object sender, EventArgs e)
{ button1.Text="ok";//使form1里的button1的text内容为OK ;}
(2)FormClosed()
(3)FormClosing()
FormClosing事件
在窗体关闭时,FormClosing事件发生。此事件会得到处理。从而释放与窗体相关的所有资源。
如果取消此事件,则窗体仍然保持打开状态。
当窗体显示为模式对话框时,单击“关闭”会隐藏窗体并将DialogResult属性设为Cancel。
通过在些事件中设置DialogResult属性可以在用户单击右上角关闭按钮时重写DialogResult的值。
FormClosed事件
在用户或Application类的Close方法或Exit方法关闭窗体后,会发生FormClosed事件。
可以使用此事件释放窗体的一些资源。还可以使用此事件保存输入窗体中的一些信息或者更新父窗体。
3.窗体属性
Name:formXxx
Text:[标题]
Windowstate[窗口状态]:最右上角的最大化,最小化,默认值
AccepButton:中的选项是你创建的button控件,你选哪个,运行是在这个窗口按回车会自动执行你选button所对应的事件
CancelButton:按Esc执行哪个
MaximizeBox:确定标题栏上的右上角是否有最大化
5.RadioButton[单选按钮
属性
Name:radXxx
Text
checked(在第一幅图片用到]
事件:checkchanged;
举例:1.选择更改label.Text;[图片1]
2.模拟考试管理系统的选择题[图片2]
eg.1.拖两个RdioButton到界面[第一个RdioButton的Text:男性,Name:radMale,第二个RdioButton;Text:女性,Name:radFemale]
分别双击两个RadioButton会进入到两个:checkchanged事件中[写代码的地方]
private void radMale_CheckedChanged(object sender, EventArgs e)
{ label1.Text = "你选择男性";
}
private void radFemale_CheckedChanged(object sender, EventArgs e)
{label1.Text = "你选择女性";
}
eg.
2.模拟考试管理系统的选择题
拖4个RadioButton,1个Button,一个label,第一个RdioButton的Text:A.10,Name:radA/第2个RdioButton的Text:B.20,Name:radB//第3RdioButton的Text:C.10,Name:radC,//第4个RdioButton的Text:D.10,Name:radD,//Button的Text:提交答案,;
private void radA_CheckedChanged(object sender, EventArgs e)
{ label1.Text = "your answer is A";
}
private void radB_CheckedChanged(object sender, EventArgs e)
{
label1.Text = "your answer is B";
}
private void radC_CheckedChanged(object sender, EventArgs e)
{label1.Text = "your answer is C";
}
private void radD_CheckedChanged(object sender, EventArgs e)
{ label1.Text = "your answer is D";
}
private void button1_Click(object sender, EventArgs e)
{if(radD.Checked)//判断是否选中D选项
{ MessageBox.Show("回答正确"); }
else
{ MessageBox.Show("回答错误!"); }
}
2.CheckBox控件[复选框按钮]一次可以选多个CheckBox控件.
(1.)常见属性:获取或设置CheckBox的状态:CheckState[Checked:选中状态,Indetermine:不确定状态,Unchecked:未选中状态],Checked:该控件已经选中.
(2)常见事件:CheckedChange,CheckedStateChanged.
eg.模拟考试管理系统的多选题
在工具栏拖4个CheckBox[分别命名为:cbA,cbB,cbC,cbD,Text分别为:A.学习c语言.B.学习c++,C.学习c#,D.学习数据结构],再拖个button[Text:提交答案],加个label.再双击分别点击每个CheckBox,进入代码区如下:
private void cbA_CheckedChanged(object sender, EventArgs e)
{ label2.Text = "your answer is ";
if (cbA.Checked)
label2.Text += "A";
if (cbB.Checked)
label2.Text += "B";
if (cbC.Checked)
label2.Text += "C";
if (cbD.Checked)
label2.Text += "D";
}
private void cbB_CheckedChanged(object sender, EventArgs e)
{
label2.Text = "your answer is ";
if (cbA.Checked)
label2.Text += "A";
if (cbB.Checked)
label2.Text += "B";
if (cbC.Checked)
label2.Text += "C";
if (cbD.Checked)
label2.Text += "D";
}
private void cbC_CheckedChanged(object sender, EventArgs e)
{label2.Text = "your answer is ";
if (cbA.Checked)
label2.Text += "A";
if (cbB.Checked)
label2.Text += "B";
if (cbC.Checked)
label2.Text += "C";
if (cbD.Checked)
label2.Text += "D";
}
private void cbD_CheckedChanged(object sender, EventArgs e)
{label2.Text = "your answer is ";
if (cbA.Checked)
label2.Text += "A";
if (cbB.Checked)
label2.Text += "B";
if (cbC.Checked)
label2.Text += "C";
if (cbD.Checked)
label2.Text += "D";
}
private void button4_Click(object sender, EventArgs e)
{ if (cbA.CheckState.ToString()=="Checked"&&cbB.CheckState.ToString()=="Checked"&&cbC.CheckState.ToString()=="Unchecked"&&cbD.CheckState.ToString()=="Checked")
MessageBox.Show("回答正确!");
else
MessageBox.Show("回答错误");
}
3.MenuStrip[菜单栏控件]
1.举例菜单栏的事件
2.添加分割线,
3快捷键,[属性]
4快捷键的属性设置,
5添加图片
6,整个菜单栏的事件(如统计菜单栏的点击次数]
[1]工具箱->.MenuStrip->键入值
如下:手动键入值
添加分割线:
右键你要添加的哪个要添加分割线,如关闭和关闭解决方案之间要添加分割线,右键关闭解决方案,->插入->separator(分割线)
添加快捷键:任意点击个你要添加的快捷键->属性->shortcutkeys->任选ctr+F17
添加图片:
->e,g(新建)->右键设置图像或者属性里的Image,->导入->你导入的图片就会在新建的前面[像个小图标]
统计菜单点击次数(在编辑里键入了一个统计点击主菜单次数
int count = 0;
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{ count++;
}
private void 统计点击主菜单次数ToolStripMenuItem_Click(object sender, EventArgs e)
{ MessageBox.Show(count.ToString());
}
3.ToolStrip[工具栏]
eg.
(1)设button:点击退出
(2)插入一些标准项什么的像保存什么的;
->在工具箱拖一个ToolStrip->[在form2下方]->举个列子(点一个button)->将这个button的Text改成退出设置->双击这个刚刚建立的button进入代码区
private void toolStripButton3_Click(object sender, EventArgs e)
{ this.Close();//实现了点击工具栏上的toolStripButton3退出
}
4.**StatusStip[状态栏]**位于form的左下方;
eg.1.显示鼠标坐标
2.显示时间
1.显示鼠标坐标
双击StatusStrip->在statusstrip有四个选项->选ToolStripStatusLabel[用于显示指示状态的文本或图标]->单击界面->点进form的事件->找到mousemove事件双击点击->进入代码区
private void Form2_MouseMove(object sender, MouseEventArgs e)
{toolStripStatusLabel1.Text = e.X.ToString()+" "+e.Y.ToString();//下图的103 162就是鼠标的坐标,鼠标一移动就会改变
}
2.显示时间
private void Form2_Load(object sender, MouseEventArgs e)
{
toolStripStatusLabel1.Text = DateTime.Now.ToString();//显示时间
}
5.ContextMenuStrip[右键菜单(按右键可以使用)
eg.窗体设置属性,右键关联,通过菜单关联.
在工具栏->找到ContextMenuStrip双击->
6.ListBox控件[列表框控件]:用于显示一组字符窜,
常见属性:Items,
方法:Item.Add(); Item.Clear();
1.获取集合中项的总数量
Count属性可以获取集合中项的总数量
eg
int total=listBox1.Items.count;
2.清除listbox中的所有项
listBox1.Items.Clear();
3.向listBox控件中添加选项[可以调用Add()方法或AddRange()方法]
listBox1.Items.Add("c#");
string[] obj={"c","c++"};
listBox1.Items.AddRasnge(obj);
for example:
在工具栏双击listbox,textbox,两个button[一个button的Text改成:添加,另一个的Text改成删除];->双击第一个添加button->进入写代码区,添加如下内容->双击第二个添加button->进入写代码区,添加如下内容->
private void button2_Click(object sender, EventArgs e)
{string name = textBox1.Text;//在textbox中写入东西,按"添加"button会把内容添加到listBox中
listBox1.Items.Add(name);
}
private void button3_Click(object sender, EventArgs e)
{listBox1.Items.Clear();
}
7.ComboBox下拉组合框控件
分为两个部分:顶部是一个允许用户键入列表项的文本框,第二部分时是一个项列表.用户可以在列表中选择;
常见属性:Items[获取一个对象,该对象表示下拉框所包含项的集合].SelectedIndex[获取或设置当前选定项的索引],DataSource,ValueMember,DisplayMember[自己去了解了解]
ComboBox控件中的Items属性可以获取示下拉框所包含项的集合,通过该集合的属性和方法可以获取总数量,移除,添加等操作.
如:
(1)Count属性:可以获取集合中项的树目]
(2)Add()方法:向项列表中添加集合项.
(3)AddRange()方法 :向项列表中添加项的数组
(4)Clear()方法:移除集合项的所有项.
(5)Remove()方法:移除指定的项
(6)RemoveAt()方法:移除指定索引的项
常见事件:
DropDown:显示ComboBox控件的下拉部分时触发事件
SelectedIndexChanged:最常用的事件之一,当改变了控件的列表部分的选项时会引发改事件
TextChanged:该事件在控件Text属性的值发生改变时引发
eg.选择自己的家乡(省,城市,线城市区)
从工具箱拖3个ComboBox,3个label.,具体如下:1.先单击第一个省份的comboBox,在属性Items中手动添加个个省份
接着双击点入第一个comboBox,和第二个ComboBox;添加如下代码;
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{ comboBox2.Items.Clear();
if(comboBox1.SelectedIndex==0)
{
comboBox2.Items.Add("衡阳市");
}
//省略其他省份的添加信息
comboBox2.SelectedIndex = 0;
}
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox3.Items.Clear();
comboBox3.Sorted = true;//自动排序
if(comboBox1.SelectedIndex==1&&comboBox2.SelectedIndex==2)
{
comboBox3.Items.Add("蒸湘区");
// 省略其他的添加
}
}
8.ListView控件[列表视图控件,通常用于显示数据,通常用于对这些数据和显示方式进行某些控件,还可以把包含在控件的数据像网络一样显示为行和列,或者显示为一列,或者显示为图标表示.]
常见属性:
Columns:获取控件中显示的所有列标题的集合.
Items:获取控件中的所有项的集合;
SmallImageList:获取或设置ImageList,当项在控件中显示小图标时使用,
LargeImageList:获取或设置ImageList,当项在控件中显示大图标时使用;
View:获取或设置项在控件的显示方式;[5种:LargeIcon,Details,SmallIcon,List,Tile.]
,从工具箱拖个ListView,5个radioButton,1个label[Name,Text,参考下图],2个ImageList;将Name分别修改成:
eg.