当前位置:编程学习 > C#/ASP.NET >>

winform的问题

我有一个问题:我有2个form窗体,form1和form2,我在form2中有一个button按钮,点击之后响应一个事件,能够转回到form1中,将传回的值在form1中实现,但是在form2中调用不了form1的控件,代码应放哪里?怎么去解决2个窗体之间的交互? --------------------编程问答-------------------- 将交互抽象为 delegate, 参数化

form1 实现, 传递给打开的 form2

文本编辑器的查找对话框就是这样干的, 下一个, 上一个, 替换, 替换所有, 都是一个 delegate,

查找对话框使用用户输入, 调用 delegate ,

实际的操作还是后面窗口实现.

控件 public, internal 是脑残的做法. --------------------编程问答-------------------- http://blog.csdn.net/tangbin330/archive/2009/12/15/5014043.aspx
里面是我写的,比较详细,可以参考下 --------------------编程问答-------------------- 我的认为是在点击按钮是调用form2 
form2 for = new form2
 如果需要里面的只得值 那就定个公共的变量 当点击按钮时就把form2里的值放到公共变量里面,要显示在form1里那就把放在公共变量的值拿出来 --------------------编程问答-------------------- 查找替换操作的 delegate 声明, 以及查找替换对话框的构造函数.


  public delegate void FindReplaceResetDelegate();
  public delegate bool FindFirstDelegate(string findText, bool matchWhole, bool matchCase);
  public delegate bool FindNextDelegate(string findText, bool matchWhole, bool matchCase);
  public delegate bool FindReplaceOneDelegate(string findText, string replaceText, bool matchWhole, bool matchCase);
  public delegate int FindReplaceAllDelegate(string findText, string replaceText, bool matchWhole, bool matchCase);

    public FindReplaceForm(string initText,
      FindReplaceResetDelegate resetDelegate,
      FindFirstDelegate findFirstDelegate,
      FindNextDelegate findNextDelegate,
      FindReplaceOneDelegate replaceOneDelegate,
      FindReplaceAllDelegate replaceAllDelegate)
    {
--------------------编程问答-------------------- class Form1
{
 int x;
 public Form1(int v)//构造函数传值
{
 this.x=v;
}
 pubic int X
{
 set{this.x=value;}//公共属性传值
}
public void setData(int v)
{this.x=v;}//方法传值
}

要取值,必须有拥有一个该对象的引用:
class Form2
{
 Form1 f=new Form1();//包含的形式,可以取f的公共的属性 事件 方法等
 
 void Function(Form1 f)
{ f.X=100;}//将对象引用作为参数传给方法的形式
}


两个窗体就是两个类,两个类之间要取值传值,要么通过公共的方法属性事件委托等等,要么通过我中有你,你中有我的包含形式,或者由第三方来包含,不外乎这向种方法 --------------------编程问答-------------------- 围观答案.. --------------------编程问答-------------------- 等一个最好的答案 --------------------编程问答-------------------- 这个并不难,只是思想问题,呵呵听我细细说来,

你应该是这样写的, 
让 

1.在form1里定义一个方法
必须是public的啊
public void str(string str)
{
  //实现一下吧你要实现的功能
}

2.接着看,在你调用Form2的时候一定要这样写这里才是关键
form2 f2=new form2(); 
   //这样代表两个窗体用的是同一个实例,也只有这样才能实现你的效果, 试试吧                        
   f2.objform1=this;
   f2.Show();   
//为什么要这样写呢,因为这样可以让两个窗体的Form1对象成为一个对象这样才能,达到你要的效果。

3.你再看

在Form2里定义一个变量 

//不要New啊 
Form1 objform1; 

然后在Form2的Button事件里写 
objform1.str(传一个参数);


补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,