跪求各位高手!帮我解决一个想拉几天的问题!

时间:2022-02-16 08:52:40
我用c#作东西时在窗体2设计拉一个checkedlistbox列表!并且是可以随时添加数据!我在窗体4要调用这个控件!并且当空间在窗体2更新信息是调用的也要自动同步更新要怎么办呢?

26 个解决方案

#1


跪求各位高手!帮我解决一个想拉几天的问题!

#2


跪求各位高手!帮我解决一个想拉几天的问题!

#3


我的form4里面要调用form2的checkedlistbox,而且当form2的
checklistbox中加入新的端口在form4中的checkedlistbox也要同步自动更新!要怎么办啊

#4


用委托把事件转过去

#5


用委托把事件转过去

#6


怎么用啊!我才学c#不懂啊!能提供代码吗?求你拉

#7


我才学c#,不懂啊!能提供代码吗?求求拉!

#8


我才学c#,不懂啊!能提供代码吗?求求拉!

#9


两窗体同时打开状态用委托可以实现
只有一个窗体处于打开状态可以将checklistbox列表数据保存,打开另一窗体时加载

#10


用Delegate或者使用事件机制(其实两者原理一样)。

#11


使用Delegate或者事件(其实两者实现的原理是一样的)。

#12


使用委托,用ref或者out传递引用。

#13


你们说的我都不懂啊!能不能简单一点或者谁能帮我提供代码啊?

#14


谁来帮我解决下啊!!

#15


最简单的方法,你弄个静态类。
把所有需要全局共享的东西就扔到这个静态类里面去。

public static class Keeper{
  public static Form1 form1;//Form1创建之后放这里
  public static Form2 form2;//Form2创建之后放这里
  ……
}

这样,你Form1变化的时候,如果希望Form3也变化,就去Keeper拿到Form3的引用,然后想干嘛就干嘛。
比如这个例子,你Form4想用Form2,你就Keeper.form2就拿到form2了啊,你想怎样就怎样。

当然还有其他你想共享的东西就可以放在里面。

Form们不必要知道彼此,只需要知道向Keeper要就行了。

不知道我这么说你明白没? 具体的代码还要靠你自己去润色。

#16


还是不懂.能给个具体代码不?

#17


public class Form1{ 
   public Form1(){
      if( Keeper.form1 == null )  Keeper.form1 = this;//构造的时候就把自己交给Keeper!
   }
   public void Update(){
     /* 做了一些更新 */
     //…
     // 我更新的时候希望form2也更新
     Keeper.form2.Update();

   }
}

public class Form2{
   public Form2(){
     if( Keeper.form2 == null ) Keeper.form2 = this;
   }
   public void Update()
   {
       //更新
   }
}

#18


这个代码写在哪里?>

#19


告诉我吧!大哥!写在哪个界面里!我真的不知道啊

#20


from难道不是对象?

一个对象的内容改变了 去通知另外一个对象

就这么简单

#21


但是我不知道怎么写代码!能给我我能用的代码吗?谢谢

#22


使用委托,用ref或者out传递引用。
正解!

#23


我觉得,在Form2中,把这个checkedlistbox定义为一个只读的属性,在Form4中,得到Form2的引用就可以了。
因为每次读这个属性的时候,都会回到Form2中是读取的。

如果想更简单一点儿,这个控件和属性声明成静态的,就连引用也不需要了。不过,运行的流程要控制好,防止未实例化之类的错误就可以了。

#24


checkedlistbox list = (checkedlistbox)Application.OpenForms["Form2"]
.Controls["checkedlistbox1"];

#25


Keeper类随便放在那里都可以。

右键添加类就行了。

#26


建议你看看“*”写的《设计模式》中的“观察者模式”,看完后你就知道该怎么实现了。
实现以后要思考这个模式为什么要这么设计,要形成自己的观点。

#1


跪求各位高手!帮我解决一个想拉几天的问题!

#2


跪求各位高手!帮我解决一个想拉几天的问题!

#3


我的form4里面要调用form2的checkedlistbox,而且当form2的
checklistbox中加入新的端口在form4中的checkedlistbox也要同步自动更新!要怎么办啊

#4


用委托把事件转过去

#5


用委托把事件转过去

#6


怎么用啊!我才学c#不懂啊!能提供代码吗?求你拉

#7


我才学c#,不懂啊!能提供代码吗?求求拉!

#8


我才学c#,不懂啊!能提供代码吗?求求拉!

#9


两窗体同时打开状态用委托可以实现
只有一个窗体处于打开状态可以将checklistbox列表数据保存,打开另一窗体时加载

#10


用Delegate或者使用事件机制(其实两者原理一样)。

#11


使用Delegate或者事件(其实两者实现的原理是一样的)。

#12


使用委托,用ref或者out传递引用。

#13


你们说的我都不懂啊!能不能简单一点或者谁能帮我提供代码啊?

#14


谁来帮我解决下啊!!

#15


最简单的方法,你弄个静态类。
把所有需要全局共享的东西就扔到这个静态类里面去。

public static class Keeper{
  public static Form1 form1;//Form1创建之后放这里
  public static Form2 form2;//Form2创建之后放这里
  ……
}

这样,你Form1变化的时候,如果希望Form3也变化,就去Keeper拿到Form3的引用,然后想干嘛就干嘛。
比如这个例子,你Form4想用Form2,你就Keeper.form2就拿到form2了啊,你想怎样就怎样。

当然还有其他你想共享的东西就可以放在里面。

Form们不必要知道彼此,只需要知道向Keeper要就行了。

不知道我这么说你明白没? 具体的代码还要靠你自己去润色。

#16


还是不懂.能给个具体代码不?

#17


public class Form1{ 
   public Form1(){
      if( Keeper.form1 == null )  Keeper.form1 = this;//构造的时候就把自己交给Keeper!
   }
   public void Update(){
     /* 做了一些更新 */
     //…
     // 我更新的时候希望form2也更新
     Keeper.form2.Update();

   }
}

public class Form2{
   public Form2(){
     if( Keeper.form2 == null ) Keeper.form2 = this;
   }
   public void Update()
   {
       //更新
   }
}

#18


这个代码写在哪里?>

#19


告诉我吧!大哥!写在哪个界面里!我真的不知道啊

#20


from难道不是对象?

一个对象的内容改变了 去通知另外一个对象

就这么简单

#21


但是我不知道怎么写代码!能给我我能用的代码吗?谢谢

#22


使用委托,用ref或者out传递引用。
正解!

#23


我觉得,在Form2中,把这个checkedlistbox定义为一个只读的属性,在Form4中,得到Form2的引用就可以了。
因为每次读这个属性的时候,都会回到Form2中是读取的。

如果想更简单一点儿,这个控件和属性声明成静态的,就连引用也不需要了。不过,运行的流程要控制好,防止未实例化之类的错误就可以了。

#24


checkedlistbox list = (checkedlistbox)Application.OpenForms["Form2"]
.Controls["checkedlistbox1"];

#25


Keeper类随便放在那里都可以。

右键添加类就行了。

#26


建议你看看“*”写的《设计模式》中的“观察者模式”,看完后你就知道该怎么实现了。
实现以后要思考这个模式为什么要这么设计,要形成自己的观点。