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

Đề tài: Làm thế nào thay đổi thuộc tính của 1 component trên 1 form từ project khác

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

    Mặc định Làm thế nào thay đổi thuộc tính của 1 component trên 1 form từ project khác

    Tôi có 1 solution trong đó có 2 project: Proj_1, Proj_2.

    Trong Proj_1 tôi có:
    _ Form: frmMain
    Trên form này tôi có:
    _ StatusStrip, chứa ToolStripStatusLabel: lblStatus.
    _ ToolStripMenu: mnCallSubForm để gọi frmSubForm

    Trong Proj_2 tôi có:
    _ Form: frmSubForm
    Trên Form này tôi có nút lệnh: cmdSetStatus

    Vấn đề là, sau khi tôi gọi frmSubForm (Proj_2) từ frmMain (Proj_1), thì làm sao khi tôi nhấn nút cmdSetStatus thì tôi có thể thiết lập
    Code:
    frmMain.lblStatus.Text = "xyz";
    Tks,

    LVD

  2. #2
    Ngày gia nhập
    09 2011
    Bài viết
    129

    Trích dẫn Nguyên bản được gửi bởi levanduyet Xem bài viết
    Tôi có 1 solution trong đó có 2 project: Proj_1, Proj_2.

    Trong Proj_1 tôi có:
    _ Form: frmMain
    Trên form này tôi có:
    _ StatusStrip, chứa ToolStripStatusLabel: lblStatus.
    _ ToolStripMenu: mnCallSubForm để gọi frmSubForm

    Trong Proj_2 tôi có:
    _ Form: frmSubForm
    Trên Form này tôi có nút lệnh: cmdSetStatus

    Vấn đề là, sau khi tôi gọi frmSubForm (Proj_2) từ frmMain (Proj_1), thì làm sao khi tôi nhấn nút cmdSetStatus thì tôi có thể thiết lập
    Code:
    frmMain.lblStatus.Text = "xyz";
    Tks,

    LVD
    Cách hỏi của bạn mình chưa rõ lắm nhưng để settext thì không khó. Bạn thử tìm cách lấy Handle của item cần settext đi rồi dùng lệnh

    public static extern int SendMessage(IntPtr hWnd, int msg, int Param, string s);

    const int WM_SETTEXT = 0x000c;

    private void SetTextt(IntPtr hWnd, string text)
    {
    SendMessage(hWnd, WM_SETTEXT, 0, text);//boxHwnd là handle của lblstatus
    }

  3. #3
    Ngày gia nhập
    10 2009
    Nơi ở
    gầm cầu
    Bài viết
    156

    diễn đàn có ô search kìa
    ghi vào đó các từ khóa
    .delegate
    hoặc
    . truyền dữ liệu giữa 2 form
    sẽ tìm dc các bài viết bổ ích để tự giải quyết vấn đề của bạn

  4. #4
    Ngày gia nhập
    07 2010
    Bài viết
    99

    Cái này có nhiều cách giải quyết : dùng delegate/event, truyền reference, property. Ở đây mình sẽ hướng dẫn bạn dùng event.

    Trong SubForm :

    Bạn khai báo 1 event. Event này sẽ trả về một chuỗi :

    Visual C# Code:
    1. // Sự kiện khi người dùng cập nhật status
    2. public delegate void StatusUpdatedHandler(string Status);
    3. public event StatusUpdatedHandler StatusUpdated;

    Trong event click của cmdSetStatus, bạn gọi sự kiện này và truyền chuỗi

    Visual C# Code:
    1. private void cmdSetStatus_Click(object sender, EventArgs e)
    2. {
    3.     // Đóng form
    4.     this.Close();
    5.  
    6.     // Kích hoạt sự kiện, kèm theo chuỗi
    7.     if (StatusUpdated != null)
    8.         StatusUpdated("Chuồi cần truyền cho Main Form");
    9. }

    Trong MainForm :

    Khi gọi SubForm, bạn nhớ gắn sự kiện của SubForm để nhận chuỗi trả về :

    Visual C# Code:
    1. private void cmdSubForm_Click(object sender, EventArgs e)
    2. {
    3.     // Tạo đối tượng SubForm, gắn sự kiện và mở form
    4.     SubForm frmSub = new SubForm();
    5.     frmSub.StatusUpdated += new SubForm.StatusUpdatedHandler(frmSub_StatusUpdated);
    6.     frmSub.ShowDialog(this);
    7. }
    8.  
    9. // Khi sự kiện StatusUpdated của SubForm được gọi, hàm này sẽ được thực thi
    10. private void frmSub_StatusUpdated(string Status)
    11. {
    12.     // Cập nhật status
    13.     lblStatus.Text = Status;
    14. }

    Góp ý 1 chút : mình nghĩ bạn không nên để 2 form này ở 2 project khác nhau, sẽ gây khó khăn khi gọi hoặc tham chiếu và rất khó quản lý, nâng cấp. Mỗi project trong 1 solution nên là các thành phần (component) tách biệt : 1 project chứa tất cả các form (Interface), các project còn lại có thể là các thư viện phục vụ xử lý, tính toán,...(Core processing)
    Never try, never know

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    3

    Chào nhquynam,
    Cám ơn bạn đã trả lời.
    Cho tôi hỏi vấn đề này nữa, tôi có thể viết một
    Code:
    public static void ThietLapStatus(string sNoiDung)
    đặt tại một
    Code:
    public class thu_vien
    để thiết lập status cho frmMain ở Proj_1 không? Nếu được thì xin hướng dẫn.

    Xin cám ơn.

    LVD

  6. #6
    Ngày gia nhập
    07 2010
    Bài viết
    99

    Mặc định Làm thế nào thay đổi thuộc tính của 1 component trên 1 form từ project khác

    Trích dẫn Nguyên bản được gửi bởi levanduyet Xem bài viết
    Chào nhquynam,
    Cám ơn bạn đã trả lời.
    Cho tôi hỏi vấn đề này nữa, tôi có thể viết một
    Code:
    public static void ThietLapStatus(string sNoiDung)
    đặt tại một
    Code:
    public class thu_vien
    để thiết lập status cho frmMain ở Proj_1 không? Nếu được thì xin hướng dẫn.

    Xin cám ơn.

    LVD
    Hoàn toàn được, nhưng rất nhập nhằng và khó quản lý. Bạn sẽ phải truyền thêm reference của cái label cần cập nhật. Nhưng mình khuyên bạn không nên tổ chức chương trình như thế này.
    Never try, never know

  7. #7
    Ngày gia nhập
    11 2012
    Bài viết
    3

    Chào bạn,

    Nếu 2 form trong cùng một project thì sao.

    Tks,
    LVD

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

  1. Thay đổi kích thước FORM thì các control trên form thay đổi theo. Làm như thế nào?
    Gửi bởi sonthuy_st trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 17-10-2012, 11:30 AM
  2. Graphic Lỗi Form chính không xem được các component khi ép kiểu bị lỗi control trên FOrm
    Gửi bởi heroofnight trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 26-03-2012, 10:06 PM
  3. ADO.NET Không thế sửa đổi giao diện của project, delete form không có tác dụng thay đổi?
    Gửi bởi abomb302 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 08-11-2011, 09:57 AM
  4. Cách add thư viện dll vào Project mà ko cần cài đặt component như thế nào ?
    Gửi bởi nguyenthuan111 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 30-09-2011, 11:29 AM
  5. Lưu những thay đổi trên form thì làm thế nào?
    Gửi bởi DuyCanh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 27-04-2010, 11:49 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