winform的窗体中菜单栏中有两个菜单的子窗体间的跳转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform的窗体中菜单栏中有两个菜单的子窗体间的跳转相关的知识,希望对你有一定的参考价值。
winform的窗体中菜单栏中有两个菜单的子窗体间的跳转,点击每个菜单会弹出相应的子窗体,第二个子窗体中有一个按钮可以跳转到第一个子窗体,可是每点击一次就会弹出第一个窗体,怎么实现点击跳转到相同的一个窗体,而不会点击多次出现很多个相同的第一个窗体
form1和form2是同一个父窗体的子窗体,就是怎么通过点击form2中的返回按钮跳转回form1,而不是又重新生成一个跟form1相同窗体,正确的应该是还在同一个父窗体内
参考一下这个http://terrylee.cnblogs.com/archive/2005/12/09/293509.html
WinForm多窗体间操作,ComboBox下拉菜单控件
1.通过操作一个窗体打开另一个窗体
已有窗体为Form1.Form1中有一个按钮,对该按钮编写点击事件:
Form2 f2 = new Form2();
f2.Show();
通过这段代码来打开Form2.
在实际应用中会出现代开Form2后需要Form1隐藏的情况,此时可以加入代码:this.Hide();来实现隐藏Form1.
[不能关闭Form1,如果关闭Form1,那么Form2也会关闭,因为Form1是主窗体]
2.在窗体之间进行值的传递
在某些情况下,需要用到某个已经获取到的值,为了提高程序运行效率,不能再次查询这个值,这时候就需要传递值.
窗体间值的传递需要用到打开窗体.
Form2 f2 = new Form2(要传递的值);
f2.Show();
这个时候值已经传递到Form2去了,这时候需要考虑如何在Form2中取出这个值
Users z = null;//根据值的类型实例化 public Form4(Users a) //方法这里也要写要传入的值,注意类型 { InitializeComponent(); z = a; //这个时候值就传递进来了,因为值定义在方法外面,所有在这个命名空间里面可以随意调用 }
3.窗体唯一性设置
打开一个窗体,这个窗体只能被打开一个,打开了一个,就不能再打开另一个窗体.
单纯的能够打开一个:
//实例化一个Form类型泛型集合,记录已经打开的窗体 List<Form>AllF=new List<Form>(); //点击事件,这里直接用大括号代替 { //实例化一个点击要打开的Form1对象 Form1 f1=new Form1(); //判断AllF里面有没有Form1 bool has=false; //遍历泛型集合,看看里面有没有这个要打开的Form1 foreach(Form ff in AllF) { if(ff is Form1)//如果ff是From1类型 { has=true; //把查到的ff转换成Form1类型 f1 =ff as Form1; } } //如果有Form1,证明已经打开了 if(has) { //当窗体最小化的时候将其还原到打开的默认状态 f1.WindowState=ForWindowState.Normal; } //如果没有说明还没有打开,那么打开Form1,并把Form1添加到集合AllF里 else { AllF.Add(f1); f1.Show(); } }
这样实际实现了只能打开一个同样窗体的目的,但是这样有一个问题,就是打开一个窗体,关闭之后,就没法打开了.对此的解决发方法是:
写一个方法,在Form1的关闭事件FormClosing里面,每当关闭的时候把Form1给移除.
方法:
public void Fclose(Form a)
{
AllF.Remove(a);
}
将这个页面的所有都传过去:
//实例化一个点击要打开的Form1对象 Form1 f1=new Form1(this);
然后在Form1的关闭事件FormClosing里面,调用移除的方法即可.
ComboBox下拉菜单控件,在数据库内的ComboBox应用的表进行修改时,如果是用的普通方法,显示数据一个方法,添加数据一个方法
这样会导致程序后期维护难度增加,在这里使用数据绑定来让ComboBox数据实现根据数据库对应表数据显示,降低数据维护难度.
1.首先将要ComboBox所需要的表的数据全部查询出来
2.对查询获得的数据用实例化泛型集合List进行接收
3.设置需要显示的列[数据]
4.设置对数据库操作需要的列[数据]
示例:
public Form3() //窗体打开自动执行的数据 { InitializeComponent(); List<Nation> Na = new NationData().ToCom();//实例化接收数据 comboBox1.DataSource = Na;//把数据放到这个ComboBox中[绑定] comboBox1.DisplayMember = "NationName";//ComboBox显示的列 comboBox1.ValueMember = "NationCode";//对数据库操作时需要的列 }
//对数据库操作用到的数据取值
ComboBox1.SelectedValue //该数据类型是基类,操作时需要转换数据类型
以上是关于winform的窗体中菜单栏中有两个菜单的子窗体间的跳转的主要内容,如果未能解决你的问题,请参考以下文章
c#winform点击菜单时只显示一个子窗体,并把子窗体放在panel1里