将值从表单传递到表单
Posted
技术标签:
【中文标题】将值从表单传递到表单【英文标题】:Passing Values from Form to Form 【发布时间】:2016-03-28 13:06:45 【问题描述】:我需要将来自组合框中的填充列表的数据绑定整数从一个传递到另一个。在表格 2 中,我需要根据传递的整数填充其余字段。我可以传递整数,但是当 form2 打开时,它会不断显示我数据库中列表顶部的值。我所有的文本框和组合框都是通过拖放数据源填充的。
studentNo
是我的全局变量
Form1代码:
studentNo = cboStudents.SelectedText
Form2代码:
cboStudentNo.SelectedText = studentNo
Insted of .selectedText
我也试过.Text
和.SelectedItem
,但无济于事。
任何建议将不胜感激。
【问题讨论】:
整数未绑定。您可能将控件绑定到数据库中的值,但没有绑定到变量。在接收者表单上创建一个方法,以允许您将 data 传递/推送给它 另外,SelectedText
可能不是你认为的那样。阅读当您将鼠标悬停在其上时弹出的 Intellisense 提示
@Plutonix 这样创建方法有什么建议?
没问题@Plutonix,感谢您的帮助!
【参考方案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
) 允许您添加代码以在传递值时执行操作。
【讨论】:
感谢您的回答!!我没有必要将学生号作为整数,如果我将其更改为字符串会不会变得不那么复杂? 它应该与它在数据库中所代表的列的类型相同。给定名称、隐含函数和 OP,我假设为 int32。 我的错,它实际上在我的数据库中设置为字符串! 是学生表的 PK/ID 吗? 不,不是,我有一个单独的 ID PK,我不使用它以上是关于将值从表单传递到表单的主要内容,如果未能解决你的问题,请参考以下文章