我需要传递一个数据绑定整数,该整数来自组合框中的填充列表,从一个到另一个。在表单2中,我需要根据传递的整数填充其余字段。我可以传递整数,但是当form2打开时,它会不断调出我数据库中列表顶部的值。我的所有文本框和组合框都由拖放数据源填充。
studentNo
是我的全局变量
Form1代码:
studentNo = cboStudents.SelectedText
Form2代码:
cboStudentNo.SelectedText = studentNo
Ins .selectedText
我也试过了.Text
和.SelectedItem
,但无济于事。
任何建议都将不胜感激。
答案 0 :(得分:1)
首先,如果studentNo
是一个整数,那么你应该打开Option Strict。这段代码不会编译:
studentNo = cboStudents.SelectedText
您正在为整数分配文本/字符串。接下来,SelectedText
可能不会做你想要的; Intellisense告诉我们:Gets or sets the text that is selected in the editable portion of a ComboBox.
。它不是列表中的选定项目。
对于学生的绑定组合框,假设DisplayMember
是名称而ValueMember
是ID,则需要SelectedValue
。您可以在SelectedValueChanged
事件中获取它:
' ToDo: check if selectedvalue is nothing to avoid NRE
studentNo = Convert.ToInt32(cbo.SelectedValue)
转换是必要的,因为SelectedValue
将为Object
,并且您希望将其分配给整数。要在需要时将其传递给另一个表单,请创建一个接收它的方法:
' on form 2
Public Sub DisplayStudentInfo(id As Int32)
' wonderful things
End Sub
然后传递信息。假设frm2
是Form2的实例:
' push/pass/convey the desired ID to the other form:
frm2.DisplayStudentInfo(studentNo)
或者,您可以在一种形式或另一种形式上创建属性作为公开它的方法。这可能(太)被动:如果Form1
将其暴露为道具,则其他形式无法知道何时发生变化。使用方法(Sub
)可以添加代码以在传递值时执行操作。