黑马程序员技术交流社区
标题:
同一解决方案下的不同项目之间的窗体回调问题
[打印本页]
作者:
mzh901024
时间:
2013-7-17 19:55
标题:
同一解决方案下的不同项目之间的窗体回调问题
本帖最后由 mzh901024 于 2013-7-21 22:09 编辑
我在做C/S模式时遇到了这个问题,在同一解决方案下,有两个项目,比如A项目,B项目,我是要实现窗体传值,A项目中有个窗体a,B项目中有个窗体b,首先是项目A引用了项目B,我在启动程序弹出窗体a的时候,单击a中某个按钮,会弹出窗体b,此时窗体a在窗体b弹出时并没有关闭,然后我提取窗体b中我所需要的数据后,单击b窗体中的某个按钮,关闭窗体b,在关闭b窗体的同时,将自己获得的数据显示在a窗体的某个控件上,我的前提是a窗体自始至终未关闭,当时我做的时候用到窗体a的再次激活事件,但没用,我在b中再new a的时候,就会出现循环依赖问题,不知这问题有没有好的解决方法
作者:
gb2312_8
时间:
2013-7-18 17:33
可以用委托和事件来做
作者:
gb2312_8
时间:
2013-7-18 17:36
本帖最后由 gb2312_8 于 2013-7-19 09:26 编辑
可以用委托 事件来实现。。
在b项目声明委托,一个button,一个textbook,代码如下:
public delegate void test8Delegate(string str);
public event test8Delegate testEvent;
private void button1_Click(object sender, EventArgs e)
{
if (this.testEvent != null)
{
string t = txtString.Text.ToString();
this.testEvent(t);
}
}
复制代码
A项目页面,一个button ,一个textbox ,代码如下:
private void button1_Click(object sender, EventArgs e)
{
test8.Form1 test = new test8.Form1();
test.testEvent+=new test8.Form1.test8Delegate(test_testEvent);
test.Show();
}
private void test_testEvent(string p)
{
textBox1.Text = p;
}
复制代码
作者:
gb2312_8
时间:
2013-7-18 17:38
本帖最后由 gb2312_8 于 2013-7-19 09:28 编辑
我没写关闭b窗口,有一个问题,传的值有System.Windows.Forms.TextBox, Text: ,,,期待高手解答
复制代码
粗心大意,b页面的textbox取值时,忘记text属性,直接tostring赋值了,以修改
作者:
于驭龙
时间:
2013-7-20 23:32
采用策略模式+单例 保证类数据的单一性就可以了
减少new的原则 本来就一个窗口 多new就不能实现交互原则了
本来张三是个窗口..结果你在new个张三..虽然都一样..
但是此张三只是长的跟张三一样的名字..数据区别可大了.
B b=new b(this);
把自已传过去就行了.
对面 b下面的a类如果==null就接收本身就可以了..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2