多窗口管理类,数据同步 多个窗口的数据由一个静态的类管理,当一个窗口的数据变化时,通知这个静态管理类,再由这个静态管理类通知各个窗口更新数据我现在用一个代理事件,在各个窗口中注册这个代理事件,但是改变数据的窗口以外的窗口数据传丢了。不知道哪位做过类似的代码,指导下啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 仅作参考 public class Test { public delegate void PosterHandle(object data); private static List<PosterHandle> posterList = new List<PosterHandle>(); public static void SignIn(PosterHandle poster) { if (!posterList.Contains(poster)) { posterList.Add(poster); } } public static void SignOut(PosterHandle poster) { posterList.Remove(poster); } //执行现有注册的委托 public static void DoData(object data) { foreach (PosterHandle poster in posterList) { poster(data); } } } public class TestForm1 : Form { private Test.PosterHandle poster; public TestForm1() { poster = new Test.PosterHandle(DoPoster); //注册 Test.SignIn(poster); } protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); //注销 Test.SignOut(poster); } private void DoPoster(object data) { //..... } } 上面那种是可扩展性很强的,下面这种是按事件来的 public class Test { public delegate void PosterHandle(object data); public static event PosterHandle OnPosterData; //执行现有注册的委托 public static void DoData(object data) { if(OnPosterData != null) OnPosterData(data); } } public partial class TestForm1 : Form { public TestForm1() { Test.OnPosterData += new Test.PosterHandle(Test_OnPosterData); } protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); Test.OnPosterData -= new Test.PosterHandle(Test_OnPosterData); } void Test_OnPosterData(object data) { //.... } } 恩,先谢谢啦,我用的第二个方法,就是我的参数是泛型List<datarow>但是其他子form收到的datarow识别不了了,都是exception,不知道为啥,查了半天没查不出来,郁闷ing~~~~ C# string 转char* 为什么我从控制台切换中文输入就出异常 一个树型节点的问题 textbox显示xml的内容,怎样才能原样格式显示 表单提交向数据库添加记录的问题 C# .net 程序员应具备啥条件,才可胜任工作 继承dataset的问题,请高手回答 原来的项目是用VS2002做的,现在用2003修改,可是有问题,何解? C# 现在两机通信用什么啊?串口吗?现在好多主板都没有串口了啊! 【问高手们一个关于.NET 程序运行机理的问题。】 控件datapager 多窗口管理类,数据同步啊
public class Test
{
public delegate void PosterHandle(object data); private static List<PosterHandle> posterList = new List<PosterHandle>(); public static void SignIn(PosterHandle poster)
{
if (!posterList.Contains(poster))
{
posterList.Add(poster);
}
} public static void SignOut(PosterHandle poster)
{
posterList.Remove(poster);
} //执行现有注册的委托
public static void DoData(object data)
{
foreach (PosterHandle poster in posterList)
{
poster(data);
}
}
} public class TestForm1 : Form
{
private Test.PosterHandle poster;
public TestForm1()
{
poster = new Test.PosterHandle(DoPoster);
//注册
Test.SignIn(poster);
} protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
//注销
Test.SignOut(poster);
} private void DoPoster(object data)
{
//.....
}
}
{
public delegate void PosterHandle(object data);
public static event PosterHandle OnPosterData;
//执行现有注册的委托
public static void DoData(object data)
{
if(OnPosterData != null) OnPosterData(data);
}
} public partial class TestForm1 : Form
{
public TestForm1()
{
Test.OnPosterData += new Test.PosterHandle(Test_OnPosterData);
} protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e); Test.OnPosterData -= new Test.PosterHandle(Test_OnPosterData);
} void Test_OnPosterData(object data)
{
//....
}
}