c#窗体基本知识

本文详细介绍了C#中模式窗体的基本知识,包括属性设置、按钮处理、关闭操作及参数传递。通过实例展示了如何创建和使用模式窗体,如设置窗体位置、大小、控件等,以及如何通过事件处理和属性来实现用户交互和数据传递。此外,还探讨了对话框的使用,如MessageBox、OpenFileDialog等。
摘要由CSDN通过智能技术生成
概述
何谓模式窗体?简单的可以理解为窗体对话框,用户必须在完成该窗体上的操作或关闭窗体后才能返回打开此窗体的窗体。本文不对模式窗体的定义、特征、功能做具体讨论,主要把重点放在如何在.net窗体应用程序中有效的使用模式窗体,解决使用模式窗体中碰到的常见问题。 

模式窗体的属性设置
在.net中一个System.Windows.Forms.Form类就表示一个窗体,通过visual studio 2005设计器能够直接添加窗体,切换到设计模式,在属性窗口中会显示属于该窗体的属性和事件。参照标准的模式窗体,以visual studio 2005程序的菜单工具->选项打开的那个选项对话框为例,对于设计器初始化的窗体还是需要进行一番设置才能达到专业化。令人高兴的是这些设置都可以在设计器模式中通过属性设置实现,笔者将通过代码来实现相应功能,下面对其进行详细描述。
Form.StartPosition属性,确定窗体第一次出现时的位置。这里设置为在父窗体的中间显示。 
this.StartPosition = FormStartPosition.CenterParent; 
Form.HelpButton属性,确定窗体的标题栏上是否有“帮助”按钮。设置显示,看上去更人性化,但实际不一定会对帮助功能进行实现。 
this.HelpButton = true
Form.MaximizeBox属性,确定窗体标题栏的右上角是否有最大化框。设置不让她显示。
this.MaximizeBox = false
Form.MinimizeBox属性,确定窗体标题栏的右上角是否有最小化框。设置不让他显示。 
this.MinimizeBox = false
Form.ShowIcon属性,指示是否在窗体的标题栏中显示图标。设置不显示。 
this.ShowIcon = false
Form.ShowInTaskbar属性,确定窗体是否出现在Windows任务栏中。这个当然要节省任务栏的宝贵空间。
this.ShowInTaskbar = false
Form.FormBorderStyle属性,指示窗体的边框和标题栏的外观和行为。设置这个属性将不允许拖动调整窗体的大小,同时Icon属性将失效,并不显示窗体标题栏图片。 
this.FormBorderStyle = FormBorderStyle.FixedDialog; 
Form.ControlBox属性,确定窗体是否有“控件/系统”菜单框。通过该设置可以隐藏标题栏的控制按钮。在有些时候还是有必要设置为False,标题栏就不会再有控制按钮。 
this.ControlBox = false
通过对以上属性的设置,基本实现模式窗体的静态功能。对于是否允许调整窗体的大小可根据实际情况而定。
 
模式窗体中的按钮
模式窗体中(比如visual studio 2005中的“选项”对话框)一般会有两个基本按钮,一个[确定]按钮用来提交,另一个[取消]按钮用来撤销提交,有时候会增加一个[应用]按钮,不过像“帮助”菜单中的“关于”模式窗体可能就只有一个[确定]按钮。Windows窗体为用户操作友好性提供了比较好的支持。我们可以在Form设计界面的属性设置中找到AcceptButton和CancelButton两个属性,默认值为空即显示(无)。在属性中可以通过选择窗体上的按钮来设置值。属性修改生成的代码如下。
先定义两个Button, 
private System.Windows.Forms.Button buttonOK; 
private System.Windows.Forms.Button buttonCancel; 
窗体的“接受”按钮。如果设置了此按钮,则用户每次按“Enter”键都相当于“单击”了该按钮。
this.AcceptButton = this.buttonOK; 
窗体的“取消”按钮。如果设置了此按钮,则用户每次按“Esc”键都相当于“单击”了该按钮。
this.CancelButton = this.buttonCancel; 
可见可以通过快捷键来方便的访问特定按钮,但这个有一些例外,比如窗体焦点刚好在buttonCancel上,当按{Enter}时实际按下的键会是buttonCancel而不是buttonOK,如果焦点停在第三个按钮上,那{Enter}按下相当于点击了该按钮。另一个细节是通过鼠标点击按钮和快捷键操作按钮的表现行为不一样,快捷键操作Button不会显示按钮被按下的显示效果,看上去什么都没有发生。

模式窗体的打开与关闭
谈到模式窗体的打开,一般通过Form.ShowDialog ()方法或她的一个重载Form.ShowDialog (IWin32Window)来实现,其中后一个方法将窗体显示为具有指定所有者的模式对话框。如下代码所示, 
OptionForm form = new OptionForm(); 
//form.ShowDialog(); 
form.ShowDialog(this); 

对于指定所有者方式打开的模式窗体可以在模式窗体内部获取主窗体的引用, 
//在模式窗体内部访问所属窗体 
MainForm form = this.Owner as MainForm
注意,如果以Form.ShowDialog ()方式打开,那Form.Owner属性会是空引用。 

谈到模式窗体的关闭,先来看一下模式窗体关闭后的返回值。无论是调用Form.ShowDialog ()方法还是Form.ShowDialog (IWin32Window)方法,都会在模式窗体关闭时返回System.Windows.Forms.DialogResult枚举值。参考MSDN,该枚举包含的值如下, 
DialogResult.Abort,对话框的返回值是 Abort(通常从标签为“中止”的按钮发送)。 
DialogResult.Cancel,对话框的返回值是 Cancel(通常从标签为“取消”的按钮发送)。 
DialogResult.Ignore,对话框的返回值是 Ignore(通常从标签为“忽略”的按钮发送)。 
DialogResult.No,对话框的返回值是 No(通常从标签为“否”的按钮发送)。 
DialogResult.None,从对话框返回了 Nothing。这表明有模式对话框继续运行。 
DialogResult.OK,对话框的返回值是 OK(通常从标签为“确定”的按钮发送)。 
DialogResult.Retry,对话框的返回值是 Retry(通常从标签为“重试”的按钮发送)。 
DialogResult.Yes,对话框的返回值是 Yes(通常从标签为“是”的按钮发送)。
由于某些原因在实际用户操作中比如选项数据无法保存,输入的设置数据有问题,点击[确定]按钮需要阻止窗体的关闭以对输入的设置进行调整。对于一些开发者在技术社区贴的阻止模式窗体关闭的代码,我认为不是很好的实现。以下用代码来描述该实现,注意其中用到了三个事件。 
//注册窗体关闭事件 
this.FormClosing += 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值