在VB中,我在1个项目中创建了2个表单。在form1中,我放了3个不同值的按钮。在form2中,我只放了1个没有值的文本框。
我的问题是,如果我按下form1中的一个按钮,form2会自动打开,我按下的按钮的值会自动添加到form2文本框中吗?
答案 0 :(得分:2)
将以下代码添加到按钮处理程序中。您可以双击按钮并将代码添加到自动创建的事件处理程序中:
'Here we are creating actual object and passing string into it constructor method
Dim instanceOfForm2 = new Form2("String value from Form1!")
instanceOfForm2.Show() ' Showing form
在Form2中,我们需要调整构造函数以接受一个参数:
Public Sub New(someValue as String)
InitializeComponents() 'This is always first row in form constructor
TextBox1.Text = someValue 'And put that text into textbox...
End Sub
答案 1 :(得分:1)
在VB6中,你可以完成lardymonkey所有的所有东西,但你不必这样做。做你想做的最简洁的方法就是这个。首先,将Form1中的三个命令按钮变为控件数组。为此,请为它们指定相同的名称(我将在我的示例中使用“cmdMyButtons”),并将它们的索引属性设置为0,1和2.然后在Form1的代码窗口中执行此操作:
Option Explicit
Dim ButtonText(2) As String
Public Sub Form_Load()
ButtonText(0) = "First Button Text"
ButtonText(1) = "Second Button Text"
ButtonText(2) = "Third Button Text"
End Sub
Public Sub cmdMyButtons_Click(Index As Integer)
With Form2
.txtMyTextBox.Text = ButtonText(Index)
.Show vbModal
End With
End Sub
现在,我喜欢lardymonkey关于模态显示的想法,所以我也把它放在这里。但是,他的代码示例中的一些内容并不是本质上必要的,无法做到你想要的,并且创造了开销,所以我把它们拉出来了:
现在,关于整个业务的简短演讲总是明确地破坏对象变量:
在退出VB6中的子例程之前,是否需要将所有本地对象变量显式设置为Nothing,这是一个长期存在的争论。我完全不同意这一点;当变量超出范围时,VB会自动处理这个问题。据我所知,人们认为必须这样做的原因是范围终结器不会以任何特定的顺序收集垃圾,有时两个交互的COM对象需要按特定的顺序销毁耦合架构。在这种情况下,您确实需要以正确的顺序清除对象以解决间歇性错误,因此神话发现VB的垃圾收集是错误的,需要通过手动销毁对象变量来规避。
坦率地说,程序员总是这样做并且永远不会忘记的想法是天真的。所以我坚持不同意它; VB6的开发人员在开发范围终结器方面付出了更多的思考和努力,而不是任何程序员将要绕过它。
答案 2 :(得分:0)
如果您不知道您使用的软件的具体版本我们无法回答,如果您提供正确的版本我们可以回答
在.net中,创建表单然后将值传递过来就很简单了。
Friend objForm2 as New Form2
Private Sub button1_Click(ByVal sender As System.Object, ByVal e as System.EventArgs) Handles button1.Click
objForm2 = new Form2()
TextBox1.Text = value
End Sub
答案 3 :(得分:0)
这将是在VB6中实现它的一种方式。我已将错误处理留给您了。
我已经假设文本框的名称是form2上的txtOutput。
在Form2中添加以下内容:
Option Explicit
Public Property Let OutputText(ByVal strOut As String)
txtOutput.Text = strOut
End Property
在Form1中添加以下内容:
Option Explicit
Private Sub Command1_Click()
DisplayForm "1"
End Sub
Private Sub Command2_Click()
DisplayForm "2"
End Sub
Private Sub Command3_Click()
DisplayForm "3"
End Sub
Private Sub DisplayForm(ByVal strValue As String)
'Declare the variables
Dim frmDetail As Form2
'Create the form
Set frmDetail = New Form2
'Load the form and display it modal
Load frmDetail
frmDetail.OutputText = strValue
frmDetail.Show vbModal, Me
'Make sure the form is destoryed
If Not frmDetail Is Nothing Then
Unload frmDetail
Set frmDetail = Nothing
End If
End Sub
确保您对代码进行注释,如果需要进行错误处理,请添加它。如果您需要有关VB6功能的帮助,可以在MSDN VB6 Reference
找到它