好吧......我怎么解释这个而不是完全混淆?...好吧,我有这个有MenuScripts(顶级和二级)的表单。我遇到的问题是其中一个二级是“添加”,它会在您点击时将您带到另一个表单。这个其他形式有一个按钮(“记录”)和文本框。该另一种形式允许用户输入数据,并且当点击记录按钮时,输入的数据被写入文本文件。好的,回到第一个表格。另一个二级MenuScript是“更新”,它也将用户带到另一个表单;但首先,用户必须单击列表框中的项目才能继续。如何从所选项目中获取数据以显示在相应的文本框中,如何让记录按钮更新数据而不是混淆并认为它只是一个添加数据按钮?
有没有办法使用“if”语句来表示“如果点击mnuAdd然后再点击”,那么点击mnuUpdate然后“。像这样的东西可以为记录按钮提供多种用途吗?
此外,如果有人可以给我一些指示,确保用户选择列表框中的项目绝对是一个加号!谢谢,伙计们!
不幸的是,由于声誉太低,我无法添加图片。
答案 0 :(得分:0)
最简单的方法:在显示第二个表单之前,将Tag
属性设置为不同的属性 - 例如"Add"
或"Update"
- 具体取决于所选的菜单项。然后,您只需测试按钮Tag
事件中的Click
值,然后相应地继续。
至于确定是否选择了列表项:如果没有ListBox,SelectedIndex
属性将被设置为-1。
答案 1 :(得分:0)
你需要在第二个表单(Details)上放置一个公共属性,它指定它所处的模式。例如,你可以创建一个这样的模式枚举:
Public Enum EntryModes
AddBook
UpdateBook
End Enum
然后,在第二个表单上定义一个公共模式属性,如下所示:
Public Property EntryMode As EntryModes
Get
Return _entryMode
End Get
Set(ByVal value As EntryMode)
_entryMode = value
End Set
End Property
Private _entryMode As EntryMode
然后,当您从菜单中显示第二个表单时,只需先设置该属性,然后再显示它:
Private Sub mnuAdd_Click(sender As Object, e As EventArgs)
Dim dialog As New DetailsDialog()
dialog.EntryMode = EntryModes.AddBook
dialog.ShowDialog()
End Sub
Private Sub mnuUpdate_Click(sender As Object, e As EventArgs)
Dim dialog As New DetailsDialog()
dialog.EntryMode = EntryModes.UpdateBook
dialog.BookToUpdate = ListBox1.SelectedItem
dialog.ShowDialog()
End Sub
如您所见,在“上传”菜单中单击,我还添加了一行,用于传递应更新图书的信息。