将值从表单传递给表单

时间:2016-03-28 13:06:45

标签: .net database vb.net global-variables

我需要传递一个数据绑定整数,该整数来自组合框中的填充列表,从一个到另一个。在表单2中,我需要根据传递的整数填充其余字段。我可以传递整数,但是当form2打开时,它会不断调出我数据库中列表顶部的值。我的所有文本框和组合框都由拖放数据源填充。

studentNo是我的全局变量

Form1代码:

studentNo = cboStudents.SelectedText

Form2代码:

cboStudentNo.SelectedText = studentNo

Ins .selectedText我也试过了.Text.SelectedItem,但无济于事。

任何建议都将不胜感激。

1 个答案:

答案 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)可以添加代码以在传递值时执行操作。