Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Cách truy cập từ form này đến các đối tượng của form khác

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

    Mặc định Cách truy cập từ form này đến các đối tượng của form khác

    mình có hai form 1 và 2 khi run form 1 chạy trước và gọi form 2 show.
    vấn đề cần giải quyết từ form 2 làm sao có thể truy cập vào thuộc tính của các đối tượng ở form 1. chẳng hạn như từ form 2 kiểm tra checkbox ở form 1 có checked hay ko?
    có bạn nào biết thì giúp mình nhé. thanks.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi nickxxx Xem bài viết
    mình có hai form 1 và 2 khi run form 1 chạy trước và gọi form 2 show.
    vấn đề cần giải quyết từ form 2 làm sao có thể truy cập vào thuộc tính của các đối tượng ở form 1. chẳng hạn như từ form 2 kiểm tra checkbox ở form 1 có checked hay ko?
    có bạn nào biết thì giúp mình nhé. thanks.
    Có 2 cách: một là set property, hai là dùng delegate

  3. #3
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Sau đây là ví dụ dùng property. Giả sử ban đầu mình có Form1 và Form2. Trong Form1 mình thêm 1 cái textbox,1 cái button, trong Form2 mình thêm 1 cái textbox. Mục đích là khi nhập textbox ở Form1, sau đó nhấn button thì sẽ mở ra Form2 và nội dung của textbox ở Form2 = nội dung của textbox ở Form1:
    Đối với Form 2, ta có đoạn code sau:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication3
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    //set property để có thể lấy và nhận giá trị từ textbox1 của Form2
            public TextBox TextBox1_Form2
            {
                get
                {
                    return textBox1;
                }
                set
                {
                    textBox1 = value;
                }
            }
        }
    }
    Trong Form1, ta chỉ việc có dòng code đơn giản sau mà thôi:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                frm.TextBox1_Form2.Text = textBox1.Text;
                frm.Show();
            }
        }
    }

  4. #4
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Mọi người thử nghĩ cách dùng delegate đi

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Anh Neverland giới thiệu qua về cái delegate đi, em chưa hiểu rõ về nó lắm.

    Em thấy trong phần định nghĩa Form nếu trên form có 1 button thì có dòng như sau ngay dưới định nghĩa class
    private Button button1;

    Theo lý thuyết về class thì biến button1 ở trên là một biến có phạm vi cục bộ, nếu ta chuyển private thành public thì nó sẽ có thể truy nhập tới từ bên ngoài --> từ form nọ có thể gọi thuộc tính của form khác. Không biết dùng cách trên có được không?

  6. #6
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Mặc định Cách truy cập từ form này đến các đối tượng của form khác

    Sau đây, mình xin giới thiệu thêm 2 cách nữa: dùng bộ khởi tạo và delegate
    Ví dụ: tình huống với 2 Form như trên

    DÙNG BỘ KHỞI TẠO (CONSTRUCTOR):
    --------------------------------------
    Trong Form 2:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication1
    {
        public partial class Form2 : Form
        {
            public Form2(string sInput) //thêm đối mục cho bộ khởi tạo mặc định do IDE phát sinh
            {
                InitializeComponent();
                textBox1.Text = sInput;
            }
        }
    }
    Trong Form 1:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2(textBox1.Text);
                frm.Show();
            }
        }
    }
    DÙNG DELEGATE
    --------------------------------------
    Trong Form 2: Xây dựng phương thức GetData để nhận dữ liệu từ textbox1 của Form1
    Code:
    public void GetData(TextBox txtForm1)
            {
                this.textBox1.Text = txtForm1.Text;
            }
    Trong Form 1:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsApplication1
    {
        //Khai báo 1 delegate dùng để vận chuyện dữ liệu giữa 2 Form
        public delegate void PassingData(TextBox text);
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                PassingData pd = new PassingData(frm.GetData);
                pd(this.textBox1);
                frm.Show();
            }
        }
    }

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

    mò suốt từ sáng đến giờ, cuối cùng nhờ thầy google, hướng dẫn của bạn giúp tui có hưng phấn trong ngày mới, cám ơn bạn nhiều.

  8. #8
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Mình không hiểu khúc này lắm
    C++ Code:
    1.         private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             Form2 frm = new Form2();
    4.             PassingData pd = new PassingData(frm.GetData);
    5.             pd(this.textBox1);
    6.             frm.Show();
    7.         }

    Sao khong gọi luôn như vầy
    C++ Code:
    1.         private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             Form2 frm = new Form2();
    4.             [B]frm.GetData(this.textBox1)[/B]
    5.             //PassingData pd = new PassingData(frm.GetData);
    6.             //pd(this.textBox1);
    7.             frm.Show();
    8.         }

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    88

    Làm như thế đều rất dài dòng mà chỉ gọi lấy được giá trị của một textbox.
    Sao ko truyền thẳng đối tượng form1 vào contructor của form 2 luon cho gọn.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Mình từ Caulacbovb qua)
    Giã từ VB6 đến với VB.Net, C# và Java.

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

  1. Graphic click vào button trên form 1, form 2 xuất hiện và đồng thời form ẩn xuống...
    Gửi bởi vipnho0209 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 36
    Bài viết cuối: 04-11-2012, 10:27 AM
  2. Click Button load form phụ từ form chính và đóng form 9
    Gửi bởi cktn5590 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 29-02-2012, 10:30 PM
  3. Dùng button ở form cha để gọi form em và truyền dữ liệu từ form anh qua form em
    Gửi bởi chitviv trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 24-10-2011, 10:32 PM
  4. Không truyền dữ liệu giữa 2 form được khi gọi form login trước form main
    Gửi bởi kienchochethahaha trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-06-2011, 08:26 PM
  5. Truy cập đối tượng của form khác trên Winform C#?
    Gửi bởi danchithancong trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 17-07-2009, 04:55 PM

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