風之力

导航

使用事件属性在主界面与用户组件之间传递事件。

一、应用场景:  

      主界面中嵌套一个用户控制,然后用户控制中有个事件需要触发,但触发后的操作则是操作主界面里面的东西。这就需要把主界面的方法传递给子界面,绑定在子界面的那个控件事件上。

  好了,我们举例现在有个用户控件,里面有个TREEVIEW;当双击TREEVIEW的节点的时候,将节点的值传递给主界面的一个TEXTBOX。那么

   1.子界面中代码如下:

    public delegate void TreeViewDoubleClick(object sender, EventArgs e);

    
public partial class frmProjectList : BaseForm
    {
        
private List<TreeViewDoubleClick> doubleClickEvents = new List<TreeViewDoubleClick>();
        
public event TreeViewDoubleClick TreeView_DoubleClick
        {
            add
            {
                doubleClickEvents.Add(value);
            }
            remove { doubleClickEvents.Remove(value); }

        }
        
        
public frmProjectList()
        {
            InitializeComponent();
            trvProject.DoubleClick 
+= new EventHandler(trvProject_DoubleClick);
        }

        
void trvProject_DoubleClick(object sender, EventArgs e)
        {
            
foreach (TreeViewDoubleClick item in doubleClickEvents)
                item(sender, e);
        }
。。。。。。

    }

然后主界面代码如下:
  
代码
        private void MainFrame_Load(object sender, EventArgs e)
        {
            frmProjectList projectList 
= new frmProjectList();
            projectList.TreeView_DoubleClick 
+= new TreeViewDoubleClick(projectList_trvProject_DoubleClick);
            
          
        }

        
void projectList_trvProject_DoubleClick(object sender, EventArgs e)
        {
            
//tsbNavigation_Click(null, null);
            
//真正运行的事件体。

        }

 


 

    public delegate void TreeViewDoubleClick(object sender, EventArgs e);

    
public partial class frmProjectList : BaseForm
    {
     
        
private List<TreeViewDoubleClick> doubleClickEvents = new List<TreeViewDoubleClick>();
        
public event TreeViewDoubleClick TreeView_DoubleClick
        {
            add
            {
                doubleClickEvents.Add(value);
            }
            remove { doubleClickEvents.Remove(value); }

        }

        
public frmProjectList()
        {
            InitializeComponent();
            trvProject.DoubleClick 
+= new EventHandler(trvProject_DoubleClick);
        }

        
void trvProject_DoubleClick(object sender, EventArgs e)
        {
            
foreach (TreeViewDoubleClick item in doubleClickEvents)
                item(sender, e);
        }
。。。。。。

posted on 2010-06-24 17:26  ZY.Zhou  阅读(269)  评论(0编辑  收藏  举报