
在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状态怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)