Winform窗体学习笔记 第二篇 Form 类

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,然后用下面语句来吸走焦点!
    textBox1.Focus();
    ※ 参考:无法引发Form.KeyUp或Form.KeyDown事件

 

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 = "帮助";
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值