WinForm中窗體間的數據傳遞(二)


通過子窗口向外引發一個事件,父窗口去實現該事件,我們可以再不關閉父窗口和子窗口的情況下進行數據的傳輸顯示

思路:在子窗口“添加用戶”的中通過點擊"添加用戶",會動態的向外引發一個事件,通過該事件,我們可以進行數據傳遞

在其他窗口中,可以來響應該事件

其中,子窗口只負責向外引發一個事件,將事件的實現方法委托給別的對象,至於事件具體如何做處理,子窗口是不關心的,這一點體現了松耦合的一個設置

 

涉及到的知識點:

1.如何定義一個事件?

public delegate void UserAddEventHandler();

public event UserAddEventHandler UserAdd;

2.如何響應子窗口引發出來的事件?

userDialog.UserAdd += userDialog_UserAdd;//將UserAdd的實現委托為userDialog_UserAdd方法

void userDialog_UserAdd()
{
  //方法體
}

3.子窗口中如何向父窗口傳遞數據?

通過delegate的聲明中,添加兩個參數:

public delegate void UserAddEventHandler(object sender,UserEventArgs e);

其中UserEventArgs是一個繼承自EventArgs的類 

public class UserEventArgs : EventArgs
    {
        public User currentUser { get;set;}
        public UserEventArgs(User user) 
        {
            this.currentUser = user;
        }
    }
從而,在向外引發事件的時候,將User的信息通過第二個參數傳遞出去 

private void button1_Click(object sender, EventArgs e)
        {
            //向外引發一個事件
            if(UserAdd!=null)
            {
                User user = new User();
                user.UserName = textBox3.Text;
                user.PassWord = textBox4.Text;
                UserAdd(this,new UserEventArgs(user));
            }
        }
在父窗口的userDialog_UserAdd方法中,就可以對接收到的數據進行處理
private void 添加用戶ToolStripMenuItem_Click(object sender, EventArgs e)
{
  FrmUser userDialog = new FrmUser();
  //將UserAdd的實現委托為userDialog_UserAdd方法
  userDialog.UserAdd += userDialog_UserAdd;

  userDialog.ShowDialog(); 
}

void userDialog_UserAdd(object sender,UserEventArgs e)
{
  MessageBox.Show(e.currentUser.UserName);
}

原創文章,轉載請注明出處:http://www.cnblogs.com/hongfei/archive/2012/12/17/2822203.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 WinForm中窗體間的數據傳遞(一) C#中兩個窗體間的數據傳遞 C#不同窗體間通信,數據傳遞 ANDROID中ACTIVITY間的數據傳遞 winform窗體間傳值 C#如何實現窗體間數據傳遞 QT 窗體之間(MainWindow 和 Dialog)數據傳遞