Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Tạo mối liên hệ giữa các Form trong project C#

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Mặc định Tạo mối liên hệ giữa các Form trong project C#

    Trong một project có rất nhiều form thực hiện mỗi chức năng riêng biệt. Bạn muốn có sự liên hệ giữa chúng để tiện việc giao tiếp, sử dụng, tác động lẫn nhau (như việc tại form này bạn muốn sử dụng các biến của form kia)...

    Đây là một số cách mà qua thời gian lập trình mình đã tìm hiểu được.

    Có 2 form có tên Form1, Form2 và các biến ở các form tương ứng

    Visual C# Code:
    1. //Form1
    2.     public partial class Form1 : Form
    3.     {
    4.         public Form1()
    5.         {
    6.             InitializeComponent();
    7.         }
    8.        
    9.         Public String strMessF1="";
    10.     }
    11.  
    12. //Form2
    13.     public partial class Form2 : Form
    14.     {
    15.         public Form2()
    16.         {
    17.             InitializeComponent();
    18.         }
    19.        
    20.         Public String strMessF2="";
    21.     }

    Tại Form1 bạn gọi Form2 hiển thị nhưng khi tạo một đối tượng form2 thì lại khởi tạo đối tượng mới. Vì vậy với biến đối tượng như vậy bạn không thể sử dụng strMess1 tại Form1 được.

    1. Tại Form2 bạn tạo một biến là frmForm1 kiểu là Form1 rồi trong lúc hiển thị Form2 bạn gán Form1 cho biến đó.
    Visual C# Code:
    1. //Form1
    2.     public partial class Form1 : Form
    3.     {
    4.         public Form1()
    5.         {
    6.             InitializeComponent();
    7.         }
    8.        
    9.         Public String strMessF1="";
    10.  
    11.         private void ShowForm2()
    12.         {
    13.                Form2 frmForm2= New Form2();
    14.                frmForm2.frmForm1 = this;
    15.                frmForm2.Show();
    16.         }
    17.     }
    18.  
    19. //Form2
    20.     public partial class Form2 : Form
    21.     {
    22.         public Form2()
    23.         {
    24.             InitializeComponent();
    25.         }
    26.         public Form1 frmForm1;
    27.         Public String strMessF2="";
    28.  
    29.         //Sử dụng strMess1 tại Form1
    30.         private void Mess()
    31.         {
    32.               MessageBox.Show(frmForm1.strMess1);
    33.         }
    34.     }

    2. Cách mà ngày xưa người ta thường dùng là tạo một class tĩnh (static) với các biến (static) muốn dùng chung giữa các form. Sự thay đổi, tạo mới các biến đều được gán vào các biến trong class static này. Tại form khác sử dụng chỉ cần đến class này để lấy ra và sử dụng.

    3. Dùng singleton (cách tớ thường hay sử dụng) : Tại Form1 tạo một singleton để tránh việc tạo mới đối tượng khi show form lần 2.
    Visual C# Code:
    1. //Form1
    2.     public partial class Form1 : Form
    3.     {
    4.         public Form1()
    5.         {
    6.             InitializeComponent();
    7.             strMess1 = "Sunflower";
    8.         }
    9.  
    10.         public string strMess1;
    11.  
    12.         #region Singleton
    13.         static Form1 me = null;
    14.         static public Form1 GetObj()
    15.         {
    16.             if (me == null)
    17.             {
    18.                 me = new Form1();
    19.             }
    20.             return me;
    21.         }
    22.         #endregion
    23.  
    24.         private void button1_Click(object sender, EventArgs e)
    25.         {
    26.             Form2 frmForm2 = new Form2();
    27.             frmForm2.ShowDialog();
    28.         }
    29.     }
    30.  
    31. //Form2
    32.     public partial class Form2 : Form
    33.     {
    34.         public Form2()
    35.         {
    36.             InitializeComponent();
    37.         }
    38.  
    39.         private void button1_Click(object sender, EventArgs e)
    40.         {
    41.             MessageBox.Show(Form1.GetObj().strMess1);
    42.         }
    43.     }

    Với singleton bạn có thể biến thể để có những cách sử dụng khác.

    4. Như cách khai báo thứ nhất rồi thông quan Contructor để truyền biến.

    5. Liên kết giữa MDIParent và ChildForm thì đơn giản hơn.
    tại ChildForm bạn muốn sử dụng biến ở MDIParent thì chỉ cần tạo đối tượng mới là MDIParent rồi xác định đối tượng này là MDIParent hiện tại.
    Visual C# Code:
    1. //MDIParet
    2.     public partial class frmMDIParent : Form
    3.     {
    4.         public frmMDIParent()
    5.         {
    6.             InitializeComponent();
    7.         }
    8.  
    9.         public string strMDIMess = "Sunflower";
    10.  
    11.         private void ShowChildForm()
    12.         {
    13.             frmChildForm frm = new frmChildForm();
    14.             frm.MdiParent = this;
    15.             frm.Show();
    16.         }
    17.     }
    18.  
    19. //ChildForm
    20.     public partial class frmChildForm : Form
    21.     {
    22.         public frmChildForm()
    23.         {
    24.             InitializeComponent();
    25.         }
    26.  
    27.         private void button1_Click(object sender, EventArgs e)
    28.         {
    29.             frmMDIParent frmMDI = new frmMDIParent();
    30.             frmMDI = (frmMDIParent)this.MdiParent;
    31.  
    32.             MessageBox.Show(frmMDI.strMDIMess);
    33.         }
    34.     }
    Đã được chỉnh sửa lần cuối bởi sunflower : 12-03-2008 lúc 03:48 PM. Lý do: Chuyển sang tag code nâng cao

    Gác Kiếm

  2. #2
    Ngày gia nhập
    05 2009
    Bài viết
    19

    hay quá em không ngờ ngôn ngữ C# lại có nhiều ứng dụng đến vậy. C# muôn năm. Em xin chân thành cảm ơn gã khổng lồ phần mềm Microsoft đã tạo ra một ngôn ngữ hay đến vậy
    Java language will become a future of technology

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    76

    Trích dẫn Nguyên bản được gửi bởi thanhtung1990 Xem bài viết
    hay quá em không ngờ ngôn ngữ C# lại có nhiều ứng dụng đến vậy. C# muôn năm. Em xin chân thành cảm ơn gã khổng lồ phần mềm Microsoft đã tạo ra một ngôn ngữ hay đến vậy
    Oach.Gio moi biet ha??
    (Sao khong viet duoc dau nhi?)

  4. #4
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Trích dẫn Nguyên bản được gửi bởi thanhtung1990 Xem bài viết
    hay quá em không ngờ ngôn ngữ C# lại có nhiều ứng dụng đến vậy. C# muôn năm. Em xin chân thành cảm ơn gã khổng lồ phần mềm Microsoft đã tạo ra một ngôn ngữ hay đến vậy
    Những khái niệm này trong Java đã có rồi mà, có gì đâu mà khen ghê thế, C# còn nhiều cái khác đáng để nói đến hơn.

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    Bình Dương
    Bài viết
    37

    THiếu cái delegate rùi
    public bool love(person anh, person em)
    {
    if(love(em,anh))
    return true;
    }

  6. #6
    Ngày gia nhập
    08 2009
    Bài viết
    5

    Mặc định Tạo mối liên hệ giữa các Form trong project C#

    Các bạn chỉ mình cách dùng biến static và lớp tĩnh (cách 2 với); mình không biết cách này.

  7. #7
    Ngày gia nhập
    08 2009
    Bài viết
    1

    biết về 4rum này lâu rùi, nhung chi mới reg -> thanks bài viết của bạn => rất hay. tiếc là 4rum này không có tính năng vote ^^

  8. #8
    Ngày gia nhập
    12 2006
    Bài viết
    28

    Trích dẫn Nguyên bản được gửi bởi neo8x Xem bài viết
    THiếu cái delegate rùi
    Cái này đã được zkday2686 trình bày rồi ( rất hay).
    Thanks cho bài viết !
    bigdog

  9. #9
    Ngày gia nhập
    08 2015
    Bài viết
    28

    Em xin hỏi các bác 1 vấn đề này ạ. Em có 2 Form f1 và f2. Trên mỗi form có 1 button btn1 và btn2. Khi chạy phần mềm cả 2 form cùng hiện lên và nếu em nhấn btn1 thì btn2 ẩn đi (.visible) thì làm sao ạ?

  10. #10
    Ngày gia nhập
    07 2016
    Nơi ở
    Hà Nội
    Bài viết
    211

    mấy hôm trước hí hoáy tìm hiểu mấy cái này, may mới làm được cái dùng hàm khởi tạo để truyền biến giữa các form với nhau nay mới biết có nhiều cách,

Các đề tài tương tự

  1. Add form có sẵn vào project trong c#
    Gửi bởi trangchuvn_2000 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 13
    Bài viết cuối: 17-10-2013, 11:29 PM
  2. Cách mở form từ project khác trong cùng solution?
    Gửi bởi who_am_i trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 18-10-2011, 12:26 PM
  3. Có thể tạo liên kết các form khác project không?
    Gửi bởi khacba trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 14-10-2011, 10:43 PM
  4. Kỹ thuật C++ Không thể fix form khi đã fix file .ui trong project (in QtCreator)
    Gửi bởi Joker trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 29-04-2011, 10:19 PM
  5. Cách duyệt lấy tất cả các Form trong một Project như thế nào?
    Gửi bởi micepig trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 07-03-2011, 08:43 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn