Announcement

Collapse
No announcement yet.

[Help]Làm sao để dùng chung datagridview giữa 2 form

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] [Help]Làm sao để dùng chung datagridview giữa 2 form

    Em có form1 và form2 . Trong form1 em có: form2 f2=new form2();f2.ShowDialog();. Ở form1 em có 1 datagridview.
    Cho em hỏi làm sao ở form 2 em có thể dùng được dữ liệu của datagridview ở form1 vậy?
    Mong mọi người giúp đỡ!
    Mình xin cảm ơn trước!

  • #2
    Anh nghĩ em chỉ việc khai báo bên form2 là form1 f1 = new form1(); Rồi bên datagridview của form1 em chỉ việc public nó lên là sử dụng ngon.

    Comment


    • #3
      ủa f2.datagridview=f1.datagirdview (dạng vậy ak, chớ a quên nó viết sao mất rồi) không được hở em,
      Phạm Minh Tâm
      Phone: 01643-652-922
      Skype ID: tampham47@live.com

      Comment


      • #4
        Bản chuyển thuộc tính Modifiers (ở phần properties) của control trên từ private sang public là được.
        Hãy là chính mình!

        Comment


        • #5
          Trong form 1 gọi mở ra form 2 , rồi trong form 2 cũng phải khai báo 1 cái form 1 nữa . Hình như là thế này :

          trong form 2 : public form1 f1 = new form1();
          trong phần gọi form2 của form1 thì : form2 f2 = new form2(); f2.f1 = this ; f2.ShowDialog();
          rồi trong form2 mún sử dụng datagrid của f1 thì : f1.datagrid....... ( nhớ là phải public cái datagid)
          Có nhiều cách truyền data giữa 2 form lắm .

          Comment


          • #6
            Mình thì làm như thế này:
            Ở Form 1 bạn tạo một nút để load Form 2, chẳng hạn đặt button tên Form2 và bắt sự kiện click:

            private void button2_Click(object sender, EventArgs e)
            {
            Form2 f2 = new Form2(dataGridView1);
            f2.Show();
            }

            Ở Form 2, bạn khai báo ở ngoài một DataGridview với tên bắt kì, chẳng hạn "data" và truyền dữ liệu thông qua hàm "public Form2(DataGridView dt){}":

            public partial class Form2 : Form
            {
            public Form2()
            {
            InitializeComponent();
            }
            DataGridView data;
            public Form2(DataGridView dt)
            {
            InitializeComponent();
            data = dt;
            }
            }

            Bây giờ thì bạn đã có thể dùng dữ liệu của datagridview ở Form1 thông qua biến "data" ở form2
            "Tôi sẽ trở thành Vua Hải Tặc" - I love One Piece

            Comment


            • #7
              Originally posted by 10520515 View Post
              Mình thì làm như thế này:
              Ở Form 1 bạn tạo một nút để load Form 2, chẳng hạn đặt button tên Form2 và bắt sự kiện click:

              private void button2_Click(object sender, EventArgs e)
              {
              Form2 f2 = new Form2(dataGridView1);
              f2.Show();
              }

              Ở Form 2, bạn khai báo ở ngoài một DataGridview với tên bắt kì, chẳng hạn "data" và truyền dữ liệu thông qua hàm "public Form2(DataGridView dt){}":

              public partial class Form2 : Form
              {
              public Form2()
              {
              InitializeComponent();
              }
              DataGridView data;
              public Form2(DataGridView dt)
              {
              InitializeComponent();
              data = dt;
              }
              }

              Bây giờ thì bạn đã có thể dùng dữ liệu của datagridview ở Form1 thông qua biến "data" ở form2
              Khi khai báo kiểu dữ liệu DataGridView dt; cái DataGridView này có có đâu mà mình định nghĩa cho cái dt?

              Comment


              • #8
                Originally posted by 10520101 View Post
                Khi khai báo kiểu dữ liệu DataGridView dt; cái DataGridView này có có đâu mà mình định nghĩa cho cái dt?
                Bạn hỏi vậy mình cũng không biết bạn đang hỏi cái gì.
                cái DataGridView này có có đâu mà mình định nghĩa cho cái dt
                DataGridView dt ở đây là tham biến của hàm nha bạn, cũng như bạn khai báo int a; long b; bool R....vậy thôi.
                Khi bạn load Form2 thì datagridview1( cái này thuộc form1) đã được truyền vào hàm Form2(DataGridView dt) rồi. Bầy giờ chỉ việc lấy một biến ở Form 1 để gán datagridview1 cho nó thôi.

                P/s: không biết bạn đã chạy thử phần code của mình chưa khi hỏi câu này. Mình đã test và OK rồi nhá.
                "Tôi sẽ trở thành Vua Hải Tặc" - I love One Piece

                Comment


                • #9
                  Được rồi cảm ơn bạn. Lúc đầu cái này DataGridView data; mình gõ DataGrid mà chưa thấy hiện ra chữ DataGridView nên mình nghĩ là ko có kiểu dữ liệu DataGridView nên mình mới nói thế!

                  Comment


                  • #10
                    thử làm thế này nhá. trong Form2 bạn cũng khai báo 1 DataGridView
                    PHP Code:
                    private DataGridView _dataGridView=new DataGridView(); 
                    rồi bạn tạo 1 thuộc tính cho nó

                    PHP Code:
                    public DataGridView dataGridView

                        
                    get{return _dataGridView;}
                        
                    set{_dataGridView=value;}

                    trong Form2 bạn cứ sử dụng _dataGridView như nó là DataGridView của Form1. trong Form1, bạn chỉ cần gán thuộc tính cho DataGridView của Form1 cho Form2 nữa là xong

                    PHP Code:
                    Form2 frm2=new Form2();
                    frm2.dataGridView=dataGridView1;   //dataGridView1 là DataGridView của Form1
                    ...                                //Gọi các hàm của Form2
                    frm2.ShowDialog(); 

                    không biết có đúng hay không nữa! cứ thử xem ^^

                    P/s: Sao forum không để thẻ code ra ngoài bản trả lời nhanh này nhỉ? cứ phải đến bản đầy đủ trức năng mới đc >"<
                    Last edited by 09520133; 10-03-2012, 03:10.
                    -----------------------------
                    Mai Văn Khải
                    Software Engineering, University Information of Technology
                    a07d26eb5cbc98f77b36a461eb629456

                    Comment


                    • #11
                      Thử cách này xem sao.
                      Dùng 1 static class lưu dữ liệu của datagridview, có thể là list<>, arraylist hay bất cứ cái gì có thể. Các datagridview chỉ làm nhiệm vụ hiển thị dữ liệu, muốn bao nhiêu datagridview cũng được. Thêm 1 cơ chế đồng bộ để khi datagridview này thay đổi giá trị thì cái khác cũng cập nhật nữa là xong.
                      quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter

                      Comment


                      • #12
                        Ah tiện đây mọi người cho hỏi: mình vẽ trước 1 hình bằng lệnh DrawImage, sau đó muốn xóa nó đi thì có thể dùng lệnh gì?

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X