读书人

主窗口和子窗口之间传递参数的有关问题

发布时间: 2012-02-14 19:19:19 作者: rapoo

主窗口和子窗口之间传递参数的问题! 特例,不知道如何解决!
我的问题是这样的:

form1是主窗口,form2是子窗口。form2中只有一个treeview。

我现在想实现:当form2中treeview的一个节点被选中的时候,form2消失,form2选中节点的值显示在form1的textbox中。同时form2要被多个其他form调用,所以不能在form2,form1的代码中写死。

请问,在这种情况下如何实现我的想法

[解决办法]
参考OpenFileDialog的用法
给form2加一个公有属性,比如SelectedValue,如:
public string SelectedValue
{
get
{
TreeNode node = treeView1.SelectedNode;
if (node != null)
{
return node.Text;
}
else
{
return string.Empty;
}
}
}
再为form2添加确认按钮,以隐藏form2(这样做简单些):
this.DialogResult = DialogResult.OK;

在form1中通过某个事件,比如点击按钮打开form2:
form2 form = new form2();
DialogResult dr = form.ShowDialog();
if (dr == DialogResult.OK)
{
this.textBox1.Text = form.SelectedValue;
}

[解决办法]
在f1中设置一public 变量 strPub
在f2选中时传递给F1中的此变量 strpub
eg:
f1中显示F2时用f2.showdiag 在后直接加txt1.text=strpub
[解决办法]
用事件就可以实现啊,很简单的嘛!!!
Form2里定义一个事件,然后你点击TreeView的节点的时候,触发该事件。
另外你只需要在要调用Form2的地方实例化一个Form2,然后订阅该事件就可以了。
实在是很简单的一个事情................
[解决办法]
Form2是一对多的关系,所以都系先定义一个公共变量,然后当Select Node的时候将值赋给该公共变量,然后通过其它Form的Active事件来获取该公共变量。
[解决办法]
建一个form,上面放上 2个 cmd button,一个 CheckBox,一个 TextBox,代码如下

Form1.vb
=========================================================================
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
objEvents.StartEvents()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
objEvents.StartEvents( "模块事件响应 ")
End Sub
End Class


Module1.vb
============================================================================
Module Module1

Public WithEvents objEvents As EventsClass = New EventsClass()

Public Class EventsClass
Public Event EVENT_CHK_BOX()
Public Event EVENT_SET_TEXTBOX(ByVal strText As String)

Public Sub StartEvents(Optional ByVal strText As String = " ")
If (strText.Trim().Length() > 0) Then
RaiseEvent EVENT_SET_TEXTBOX(strText)
Else
RaiseEvent EVENT_CHK_BOX()
End If
End Sub
End Class

Private Sub ResponseChkEvent() Handles objEvents.EVENT_CHK_BOX
Form1.CheckBox1.Checked = Not Form1.CheckBox1.Checked
End Sub

Private Sub ResponseSetEvent(ByVal strText As String) Handles objEvents.EVENT_SET_TEXTBOX
Form1.TextBox1.Text = strText
End Sub
End Module


[解决办法]
楼上的方法基本正确,如果要跨不同的form,那么最好在form1上再加上一个共享参数(shared),用于接受从其他form传来的数据。

读书人网 >VB Dotnet

热点推荐