一、多窗体 1、哪个是主窗体 利用From1的button将From2打开 privatevoidbutton1_Click(objectsender,EventArgse){Form2f2=newForm2();f2.Show();this.Hide();//打开From2时,隐藏From1} 光那样出现的问题:主窗体隐藏了,关闭其它窗体后,没有将主窗体显示/关闭,那么程序就关不上了 (1)、构造函数传值,将窗体传到另一个窗体中去 首先打开From2代码,并选择事件FormClosing Form1F1=null;publicForm2(Form1f1){InitializeComponent();F1=f1;}privatevoidForm2_FormClosing(objectsender,FormClosingEventArgse){F1.Close();} 然后将From1中的Form2f2=newForm2();改为Form2f2=newForm2(this); 2、窗体只能打开一个 在From1中创建一个全局的泛型集合,为了放置全部打开的窗体 ListFormflist=newListForm();(1)、在窗体打开之前,判断集合中是否有name一致的窗体,如果有就说明已经打开了,就不要再打开了 将From1中button1的点击事件改为 boolhas=false;//From2是否已被打开一次Form2f2=newForm2(this);foreach(FormFinflist){if(F.Name==f2.Name){has=true;}}if(has){}else{flist.Add(f2);f2.Show();} 问题:当窗体打开了,关闭后,就无法再次打开了办法:当窗体关闭时,清除Form1中集合中的此窗体对象记录首先在from1添加一个函数 publicvoiddeleteFrom(FormF){flist.Remove(F);} 然后在From2的FormClosing事件中改为 if(F1!=null){F1.deleteFrom(this);} 问题:当窗体已经打开,再次点击打开按钮,不会将已打开的窗体重新显示并焦点进入办法:找到已打开对象,将WindowState属性设置为:找到已打开窗体的对象,使用Focus方法; 在From1中button1的点击事件中if(has){}中添加“f2.Close();”,它起到释放内存的作用 if(F.Name==f2.Name){has=true;}true;后添加F.WindowState=FormWindowState.Normal;//最小化或最大化时点击按钮恢复正常大小F.Focus();//焦点进入 3、窗体之间的传值和控制 传值:构造函数传值 将From2的构造函数改为 publicForm2(Form1f1,stringuname){InitializeComponent();F1=f1; label1.Text="欢迎回来,"+uname;} 在From1中改为Form2f2=newForm2(this,textBox1.Text); 控制:第一步,找到窗体对象,第二步,将窗体对象的控件值更改注意:要将窗体中的对象访问权限修改为public: 在From2中添加新建一个按钮和文本框,点击此按钮的点击事件,添加if(F1!=null){F1.button1.Text=Textbox1.Text}4、提示框类型的窗体 ShowDialog(); 修改地方: Form2f2=newForm2(this,textBox1.Text);f2.ShowDialog(); 作用: 将窗体显示为模式对话框。在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码 二、菜单和工具栏 1、MenuStrip:顶部菜单,可右键点击插入标准项分割线:1、-2、右键插入Separator 快捷键:每一个项右键属性最下面ShortcuKeys可以设置快捷键,ShowShortcuKeys是否在该项上显示快捷键不管选项隐藏还是菜单隐藏,快捷键都管用 2、ContextMenuStrip:右键菜单 在属性行为上ContextMeunStrip选择您要关联右键菜单,即可使用右键菜单,每一个控件都可以关联右键菜单 3、StatusStript:底部菜单 4、ToolStrip工具条 5、ToolStripContainer工具条容器 .NET开发,前端设计,鍖椾含甯備腑绉戝尰闄㈠ソ涓嶅ソ鐧界櫆椋庢不鐤楀尰闄?
|