在弹出窗口的文本框中输入文本,并将此文本添加到主窗口的列表框中
实现方法
这个例子是利用对话框的返回值来获取用户输入的信息。基本过程如下:
1、主窗口frmMain以对话框的方式(模式窗口的方式)弹出输入窗口,供用户输入文本
2、当用户点击输入窗口的按钮时,输入窗口关闭并返回常数:
System.Windows.Forms.DialogResult.OK
主窗口在检测到这个返回值时,将输入窗口文本框的内容添加到列表框中
3、当用户点击输入窗口的按钮时,输入窗口关闭并返回常数:
System.Windows.Forms.DialogResult.Cancel
主窗口在检测到这个返回值时,将不做任何添加,仅弹出消息框“一个添加操作被取消”
4、当用户点击输入窗口右上角的<关闭>按钮时,运行结果同过程3
为了能在点击相应按钮时返回相应的常数,需要对按钮和按钮的DialogResult属性进行设置,可以在<属性>窗 口中设置,也可以用代码。
BOK.DialogResult = DialogResult.OK
BCancel.DialogResult = DialogResult.Cancel
另外,对输入窗口frmInput的AcceptButton属性和CancelButton属性分别设置为BOK和BCancel,这样,就可以通过键盘快捷的进行输入了。
输入窗口 frmInput 的属性设置
AcceptButton = BOK ' 按钮OK
CancelButton = BCancel ' 按钮Cancel
主窗口按钮的代码
Private Sub BAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BAdd.Click
' 创建一个输入窗口实例
Dim frm As New frmInput
' 此变量用于存放对话框的返回结果
Dim iResult As Integer
' 显示对话框
iResult = frm.ShowDialog(Me)
' 根据返回结果进行相应操作
If iResult = System.Windows.Forms.DialogResult.OK Then
' 由OK按钮返回,进行添加
ListBox1.Items.Add(frm.TextBox1.Text)
ElseIf iResult = System.Windows.Forms.DialogResult.Cancel Then
' 由Cancel按钮或关闭按钮返回,不进行添加
MsgBox("一个添加操作被取消")
Else
End If
' 销毁输入窗口的实例
frm.Dispose()
End Sub
输入窗口按钮的代码
Private Sub BOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BOK.Click
Me.Close()
End Sub
输入窗口按钮的代码
Private Sub BCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BCancel.Click
Me.Close()
End Sub
关于主窗口按钮代码中的Dispose()
当窗体显示为模式对话框时,单击关闭窗体按钮(窗体右上角带“X”的按钮)将使窗体隐藏,并使 DialogResult 属性设置为 DialogResult.Cancel。与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置 DialogResult 属性的值时,.NET Framework 不调用 Close 方法。窗体转而可以隐藏并可重新显示,而不用创建该对话框的新实例。因为未关闭显示为对话框的窗体,所以在应用程序不再需要该 窗体时,必须调用该窗体的 Dispose 方法。
关于ShowDialog方法
此方法有两个版本:
Overloads Public Function ShowDialog() As DialogResult
Overloads Public Function ShowDialog(IWin32Window) As DialogResult
第一个版本不带参数,也就是不指定父窗口,以当前活动窗口作为对话框的所有者,此方法受 .NET Framework 精简版的支持。
第二个版本可以用参数指定所有者,单是不受.NET Framework 精简版的支持。
关于DialogResult
命名空间:System.Windows.Forms
这是一个枚举类型,其成员用于标识对话框的返回值。成员列表如下:
成员名称 | 说明 |
Abort .NET Framework 精简版支持 | 对话框的返回值是 Abort (通常由标签为“中止”的按钮发送) |
Cancel .NET Framework 精简版支持 | 对话框的返回值是 Cancel (通常由标签为“取消”的按钮发送) |
Ignore .NET Framework精简版支持 | 对话框的返回值是 Ignore (通常由标签为“忽略”的按钮发送) |
No .NET Framework 精简版支持 | 对话框的返回值是 No (通常由标签为“否”的按钮发送)。 |
None .NET Framework 精简版支持 | 从对话框返回了 Nothing 这表明有模式对话框继续运行 |
OK .NET Framework 精简版支持 | 对话框的返回值是 OK (通常由标签为“确定”的按钮发送) |
Retry .NET Framework 精简版支持 | 对话框的返回值是 Retry (通常由标签为“重试”的按钮发送)。 |
Yes .NET Framework 精简版支持 | 对话框的返回值是 Yes (通常由标签为“是”的按钮发送) |
关于AcceptButton 属性和CancelButton 属性
这是Form类的两个属性。
AcceptButton属性使您得以指定当用户在应用程序中按 ENTER 键时发生的默认操作。可使用此属性允许用户在完成操作后,只按 ENTER 键就 可快速定位,而不必用鼠标手动单击“接受”按钮。
如果窗体上当前选定的控件截获 ENTER 键并处理它,则“接受”按钮可能不 被激活。例如,当选定多行文本框控件时,该控件允许按 ENTER 键在其中插入一行新字符。
类似的,CancelButton 属性是指定每 当用户按 ESC 键时发生的默认操作。可以使用此属性允许用户只按 ESC 键在不提交更改的情况下关闭窗口,而不必用鼠标手动单击“取消” 按钮。
这两个属性与对话框的返回值并没有关系,它们只是指定当Enter键和Esc键按下时,执行哪个按钮的操作,也就是等同于按 下相应的按钮,将执行相应按钮的Click事件,并且会按照按钮的DialogResult属性设置返回相应的值。也可以将两个属性设置为同一个按钮, 则当Enter按下或Esc按下时,都相当于按下了这个按钮。
文章评论(0条评论)
登录后参与讨论