1. Form 属性:
- TopMost:获取或设置一个值,指示该窗体是否应显示为最顶层窗体。
- OwnedForms:获取 Form 对象的数组,这些对象表示此窗体拥有的所有窗体。(先要用AddOwnedForm()方法来添加窗体。)
实现跨窗体关闭窗体
-
public void button1_Click(object sender, EventArgs e) { Form1 frm1 = new Form1(); if (button1.Text == "开始") { this.AddOwnedForm(frm1); //将窗体加入到OwnedForm里面 frm1.Show(); button1.Text = "停止"; } else { foreach (Form frm in this.OwnedForms) { frm.Close(); //将所有OwnedForms都删掉 } button1.Text = "开始"; } }
- AcceptButton:获取或设置当用户按 Enter 键时所单击的窗体上的按钮。
- CancelButton:获取或设置当用户按 Esc 键时单击的按钮控件。
- MaximizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最小化”按钮。(bool)
- MinimizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮。(bool)
- MaximumSize:获取窗体可调整到的最大大小。
- MinimumSize:获取窗体可调整到的最小大小。
- ClientSize:获取或设置窗体工作区的大小。窗体工作区的大小是除边框和标题栏外窗体的大小。窗体的工作区是窗体内可放置控件的区域。
- Size:获取或设置窗体的大小。包括外边框!ClientSize要比Size表示的范围小一点。
- Width:
- Height:
- Opacity:获取或设置窗体的不透明度级别。默认值是1,为不透明,0为完全看不见。
- IsMdiContainer:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 子窗体的容器。(bool)
- MdiParent:获取或设置此窗体的当前多文档界面 (MDI) 父窗体。(子窗体显示在父窗体内部)
- MdiChildren:获取窗体的数组,这些窗体表示以此窗体作为父级的多文档界面 (MDI) 子窗体。
- Length:获取子窗体的个数。
- ActiveMdiChild:获取当前活动的多文档界面 (MDI) 子窗口。
- BackgroundImage:获取或设置在控件中显示的背景图像。
- Size:获取图片的大小。
- FormBorderStyle:获取或设置窗体的边框样式。
- None:无边框。
- FixedSingle:固定的单行边框。
- Fixed3D:固定的三维边框。
- FixedDialog:固定的对话框样式的粗边框。
- Sizable:可调整大小的边框。
- FixedToolWIndow:
- SizableToolWindow:
- WindowState:获取或设置窗体的窗口状态。
- Normal,Minimized,Maximized
- KeyPreview:获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。 如果窗体将接收所有键事件,则为 true;如果窗体上当前选定控件接收键事件,则为 false。默认为 false。
public void CreateMyForm() { // Create a new instance of the form. Form form1 = new Form(); // Create two buttons to use as the accept and cancel buttons. Button button1 = new Button (); Button button2 = new Button (); // Set the text of button1 to "OK". button1.Text = "OK"; // Set the position of the button on the form. button1.Location = new Point (10, 10); // Set the text of button2 to "Cancel". button2.Text = "Cancel"; // Set the position of the button based on the location of button1. button2.Location = new Point (button1.Left, button1.Height + button1.Top + 10); // Set the caption bar text of the form. form1.Text = "My Dialog Box"; // Display a help button on the form. form1.HelpButton = true; // Define the border style of the form to a dialog box. form1.FormBorderStyle = FormBorderStyle.FixedDialog; // Set the MaximizeBox to false to remove the maximize box. form1.MaximizeBox = false; // Set the MinimizeBox to false to remove the minimize box. form1.MinimizeBox = false; // Set the accept button of the form to button1. form1.AcceptButton = button1; // Set the cancel button of the form to button2. form1.CancelButton = button2; // Set the start position of the form to the center of the screen. form1.StartPosition = FormStartPosition.CenterScreen; // Add button1 to the form. form1.Controls.Add(button1); // Add button2 to the form. form1.Controls.Add(button2); // Display the form as a modal dialog box. form1.ShowDialog();
2. Form 方法:
- Activate:激活窗体并给予它焦点。
- AddOwnedForm:向此窗体添加附属窗体。
- Close:关闭窗体。
- LayoutMdi:在 MDI 父窗体内排列多文档界面 (MDI) 子窗体。MdiLayout 枚举
- Cascade:所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。
- TileHorizontal:所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。
- TileVertical:所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。
- ArrangeIcons:所有 MDI 子图标均排列在 MDI 父窗体的工作区内。
- Hide:对用户隐藏控件。
- Show:显示窗体。两个窗体都可以操作!
- ShowDialog:将窗体显示为模式对话框。只能操作对话框窗体!
通过在 Load 事件中修改 Location 可以改变显示的位置! - Focus:用于激活窗体并给予其焦点。
- SetBounds(int x, int y, int width, int height):x和y为窗体位置坐标,width为窗体宽度,height为窗体高度。
- SetDesktopLocation(int x, int y):以桌面坐标设置窗体的位置。
- SetDesktopBounds(int x, int y, int width, int height):以桌面坐标设置窗体的边界。
3. Form 事件:
- Load:第一次显示窗体前发生。
- Move:窗体移动的时候触发。
- Activated:窗体获得焦点(被激活)时引发。
- Deactivate:窗体失去焦点(未激活)时引发。
- FormClosing:在关闭窗体时发生。
其中 e 有两个重要的属性!
Cancel:获取或设置指示是否应取消事件的值。true 则取消关闭动作!
CloseReason:获取一个值,该值指示关闭窗体的原因。private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult a; a = MessageBox.Show("你真的要关闭吗(⊙_⊙?)", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (a == DialogResult.No) //DialogResult枚举的值, 根据上面MessageBox中的按钮来定 { e.Cancel = true; //单击No, 取消关闭. } }
- FormClosed:关闭窗体后发生。
- KeyUp:在控件有焦点的情况下释放键时发生。
- KeyDown:在控件有焦点的情况下按下键时发生。
- KeyPress:在控件有焦点的情况下按下键时发生。
※ 可以通过新建一个空的textbox,然后用下面语句来吸走焦点!
※ 参考:无法引发Form.KeyUp或Form.KeyDown事件textBox1.Focus();
4. Form扩展:
-
添加的窗体Form2,还是一个类,因此不能直接用,还要先new一个才能用,类似下面的例子,要想加载Form2,首先要new一个Form2,然后在用Show方法。
1 Form2 form2 = new Form2(); 2 form2.Show();
- 在Form2中调用Form1中的TextBox文本实现,直接调用不能实现,需要在Form1中建立一个新的属性,然后让这个属性返回TextBox的文本。
Form1代码:private static string bt1; //定义字段 public string BT1 //定义属性获取textBox1的text值 { get { return bt1; //返回字段的值 } } public void button1_Click(object sender, EventArgs e) { bt1 = textBox1.Text.Trim(); //给字段赋值 }
Form2代码:Form1 frm1 = new Form1(); //先实例化一个Form1 frm1.Show(); MessageBox.Show(frm1.BT1); //调用frm1的public属性BT1
- 通过Form2关闭Form1的方法,如Form属性中OwnedForms的举例。
5. 窗体间的交互:
实现图示:
单独点击红色按钮时候,显示下面的帮助文件!
再次点击红色按钮时,帮助文本框关闭,同时用帮助文本框自带的“×”也可以关闭窗体!
实现代码:
主窗体部分:
Form2 fr2; //定义帮助窗体
public static bool IsHelpClosed = true; //定义全局的static变量,是否手动关闭窗体
private void button4_Click(object sender, EventArgs e)
{
if (!IsHelpClosed) //若没有手动关闭窗体,则此时关闭窗体
{
fr2.Close();
}
else //若手动关闭了窗体,此时要打开窗体
{
fr2 = new Form2();
fr2.Show();
fr2.Left = this.Left + this.Width + 10;
fr2.Top = this.Top;
}
}
帮助窗体部分:
private void Form2_Load(object sender, EventArgs e)
{
Form1.IsHelpClosed = false; //窗体加载的时候,给其赋值为未手动关闭
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Form1.IsHelpClosed = true; //窗体手动关闭时候,给其赋值为手动关闭
}
6. 实现不同窗体中的控制
如上面例子,在我打开帮助文本框的时候,按钮显示“关闭帮助”;当我关闭帮助文本框的时候,按钮显示“帮助”。问题在于关闭帮助文本框的时候,如何能操作到主窗体的帮助按钮修改为“帮助”呢,这就要要在床架 Form2 的时候后,定义关闭窗体事件!
private void button3_Click(object sender, EventArgs e)
{
if (!IsHelpClosed)
{
help.Close();
button3.Text = "帮助";
}
else
{
help = new Helper01();
help.FormClosed += new System.Windows.Forms.FormClosedEventHandler(helpChange); //写事件
help.Show();
help.Left = Left + Width + 10;
help.Top = Top + Height / 2 - help.Height / 2;
button3.Text = "关闭帮助";
}
}
private void helpChange(object sender, FormClosedEventArgs e) //事件函数,保证与委托的参数一致
{
button3.Text = "帮助";
}