c# winform 两个窗口怎么传值

c# winform 两个窗口怎么传值,第1张

在A窗口实例中声明(并初始化)一个B的对象

然后在A窗口相关按钮的单击(双击)事件委托中,使用该B对象:

1 调用 Show方法以非模态的形式d出窗口

2 调用ShowDialog的方式d出模态窗口

如果使用1的方式,A窗口的实例应该订阅B的关闭窗口的事件,当B窗口关闭时通过子类化的EventArgs把值“推”给A的委托,或者让A在委托中主动使用B的方法来“拉”该希望获取的值。

如果使用2的方式,当B窗口关闭后,ShowDialog才返回,然后直接调用B的公开方法获取该值即可

你可以在打开之前将 新窗口记录进ArrayList 中

然后再点一个按钮遍历 这个ArrayList 找到你所需要的

按照你举的例子,代码如下:

using SystemCollections;

public partial class Form1 : Form

{

int i;

public Form1()

{

i = 1;

InitializeComponent();

}

ArrayList list = new ArrayList();

private void button1_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2();

((TextBox)f2Controls["txt"])Text = iToString();

i++;

f2Show();

listAdd(f2);

}

private void button2_Click(object sender, EventArgs e)

{

foreach (Form f in list)

{

if (((TextBox)fControls["txt"])Text == "2")

{

((TextBox)fControls["txt"])Text = "a";

}

}

}

}

有两个方法。

1 让这按钮成为静态按钮。这需要窗体也有静态指针。

public static Form2 窗体指针;

public buttxxxxxxxxxx//你懂的

Form2()//构造函数

{

窗体指针=this;

}

在form1里

Form2窗体指针buttxxxxxx

就能得到。

2 让这个按钮在改变状态时传送信息到form1里

Form1里定一个public static buttonx或者bool 这类的。

在form2的button改变状态事件里修改form1的这个信息。

你说你的控件是button,我觉得你可能用错了控件,一般都是复选框,是专门用来收集是否选中的状态的。而且还有按钮式外观。

一般的说,这样的窗口是通过用户控件来实现的。

左侧有一系列标签,右侧是一个容器,比如Panel。当左侧的标签被点击时将对应的用户控件放到右侧的容器中即可。右侧窗口显示的内容完全在用户控件中。

比如左侧的按钮btnFunPage1的Click事件中写以下的代码来为右侧的pnlContainer添加用户控件ucFunPage1

ucFunPage1 page = new ucFunPage1();

pageDock=DockFill;

thispnlContainerControlsClear();

thispnlContainerControlsAdd(page);

其中ucFunPage1包含有你所需要的右侧窗口的内容的用户控件

一般来说,产品资料应该是定义为了一个类,那么参数传递就是传递一个集合就可以了,假设这个类命名为X,那么就是将选择的记录形成的List<X>传递过去就可以了;如果要简化,甚至可以传递一个包含选择产品编号的List<string>就可以,因为产品编号应该是唯一的;至于传递的方式有很多种,定义公共的变量、在构造函数中添加包含集合的参数这些都可以,可以根据你的喜好来。

以上就是关于c# winform 两个窗口怎么传值全部的内容,包括:c# winform 两个窗口怎么传值、winform 父窗体如何获取子窗体控件的值、C# Winform 关闭主窗体获取另外一个窗体button状态怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9776679.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存