我想要实现上图所示的界面!每次点击左边的树上的第三层的节点的时候,都能把第三层节点相应的属性显示在右边的网格里。
分别用的是两个用户控件。一个用户控件里放的是TreeView,另外用户控件里用的是DataGridView,每次点击左侧树的时候就把相应的一个ID传给右侧的用户控件,在数据库里查了以后显示相应的属性。我想在左边的用户空间里写一个委托事件Update,在右边的用户控件里写好订阅这个委托的事件setNodeID用来重新使DataGridView绑定新的数据源,每次当点左边击节点的时候,在After_selected()事件里,先new一个右边的用户控件的实例,然后调用委托事件。但是现在不能实现啊,好像没反应啊??
下面是代码:
-------------------------------------------------------------------------------------------
左侧用户控件的:
private void nodeTree_AfterSelect(object sender, TreeViewEventArgs e)
{
/*这里得到了当前鼠标点击的节点的ID*/ UCDataGridView ucDataGridView = new UCDataGridView();//new一个用户控件的实例 this.Update += new EventHandler(ucDataGridView.setNodeID);//把右边用户控件的方法订阅委托事件 Notify(nodeID);
} public delegate void EventHandler(int selectedNodeID); public event EventHandler Update;//声明一个EventHandler类型的委托事件,名称为Update private int nodeID; public int NodeID
{
get { return nodeID; }
set { this.nodeID = value; }
}
public void Notify(int newNodeID)//当selectedNodeID改变时,调用此方法,这个方法调用了Update这个委托事件,其分别把当前ID的值通知给另外两个控件。
{
nodeID = newNodeID;
}大家谁有更好的方法或者可以帮我找找问题的?紧急求救!
分别用的是两个用户控件。一个用户控件里放的是TreeView,另外用户控件里用的是DataGridView,每次点击左侧树的时候就把相应的一个ID传给右侧的用户控件,在数据库里查了以后显示相应的属性。我想在左边的用户空间里写一个委托事件Update,在右边的用户控件里写好订阅这个委托的事件setNodeID用来重新使DataGridView绑定新的数据源,每次当点左边击节点的时候,在After_selected()事件里,先new一个右边的用户控件的实例,然后调用委托事件。但是现在不能实现啊,好像没反应啊??
下面是代码:
-------------------------------------------------------------------------------------------
左侧用户控件的:
private void nodeTree_AfterSelect(object sender, TreeViewEventArgs e)
{
/*这里得到了当前鼠标点击的节点的ID*/ UCDataGridView ucDataGridView = new UCDataGridView();//new一个用户控件的实例 this.Update += new EventHandler(ucDataGridView.setNodeID);//把右边用户控件的方法订阅委托事件 Notify(nodeID);
} public delegate void EventHandler(int selectedNodeID); public event EventHandler Update;//声明一个EventHandler类型的委托事件,名称为Update private int nodeID; public int NodeID
{
get { return nodeID; }
set { this.nodeID = value; }
}
public void Notify(int newNodeID)//当selectedNodeID改变时,调用此方法,这个方法调用了Update这个委托事件,其分别把当前ID的值通知给另外两个控件。
{
nodeID = newNodeID;
}大家谁有更好的方法或者可以帮我找找问题的?紧急求救!
解决方案 »
- 静态方法被并发了 怎么处理?在线结贴!
- linq to sql 如何??
- 2003系统死循环出现了,超时,是什么问题?急!!!!!!!!100分另外开帖送.已经问了三次了都没人回答
- 如何读INI文件中的设置信息啊?
- winforms与sqlserver打包问题
- 请问如何在DataGridTextBox中捕获到回车事件?用Key_Down不行!
- 请问:用DropDownList如何动态显示页面,即ListItem的个数是动态的.
- 一个CSDN上常见的问题,但都没有给出最终解决方案,请高手解决!!特急,明天就要出活,不然后果不堪设想!!!
- 为什么不能调试?在线热情等待!!谢谢
- .net 4.5下winform配置文件保存不了
- C# 关於DateTime的问题
- 随机数random
你这里是new一个新的UserControl,根本就不是你右边那个控件,那又怎么可能更新呢
在左边的控件中定义一个引用右边控件的属性,然后在Form中把右边控件的引用传给它
Arraylist arraylist=new Arraylist();
Add方法加只,remove方法去值,
每次对string【】数组赋值时都要初始化
然后遍历arraylist对string【】数组赋值
http://bbs.csdn.net/topics/390284294
下面是你以前回答别人的那个答案:
----------------------------------------------------------------------------------------
你应该这么设计:控件1定义一个TextBoxValueSubmitted事件,当用户点击其中的按钮的时候触发。控件本身不应该知道触发了事件外部谁关心它,也不必知道外部接到通知该做什么,它只负责按了按钮就触发这个事件把消息传出去就行了。控件2应该有一个TextBoxValue属性,外部可以通过它设置文本框的值。同样的道理,这个控件不应该知道为什么这个值要被设置,也不应该知道谁在试图修改它,它只要接到调用请求,就照着做就行了。你的主程序应该编写一个事件处理函数,并且关联给控件1的TextBoxValueSubmitted事件,就好比你使用一个按钮而准备一个Click事件的处理函数那样。在这个处理函数中,你去调用控件2的TextBoxValue属性,设置正确的值。主程序不关心控件1的事件怎么触发,也不关心设置属性后控件2会做什么,它就是一个桥梁,把这些控件联系在一起。-----------------------------------------------------------------------------------------------
我左边是一个UserControl1,里面放的是一个TreeView,右边是一个DataGridView,想要点击节点的时候右边的DataGridView能完成实时更新。我不清楚哪个是我的主程序了,这两个UserControl都放在Form1里面,现在我的主程序是Form1的构造函数还是整个程序的入口处Program.cs的Main方法??我的这几行代码 UCTreeView ucTreeView = new UCTreeView();
UCDataGridView ucGridView = new UCDataGridView();
ucTreeView.Update += new UCTreeView.EventHandler(ucGridView.getNewSource);//订阅事件在Form1的构造函数和Main方法里分别都试过,但是都不能完成,报错了,提示之前声明的Update代理没有实例化,证明订阅事件的这个方法根本没执行啊?求解。我对winform窗口运行的机制了解的不好。谢谢了!
关系不是紧密的,都有和数据库交互的部分,做成两个模块,降低耦合性啊,看了别的资料说是事件的挂载有问题,调试的时候每次都说 定义的委托为null。
看了别的资料说是事件的挂载有问题,我调试的时候每次都说 定义的委托为null。为什么没执行呢?