Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 12
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    cách khai báo các event có thể chạy 1 lần hoặc khi cần thì mới chạy ?


  2. #2
    Ngày tham gia
    Sep 2015
    Đang ở
    24 Rạch Bùng Binh , P10,Q3 , HCM
    Bài viết
    0
    private void treeList1_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
    {
    if(!IsRun)
    {
    return;
    }
    //To do things
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dongtrien
    các event thường chạy liên tục, các bạn có biết cách khai báo để sự kiện chạy 1 lần hoặc khi cần thì mới chạy được không ? ví dụ sự kiện:
    Mã:
    private void treeList1_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
    như khi gọi 1 hàm vậy:
    Mã:
    private void Form1_Load(object sender, EventArgs e)
    {
        treeList1_CustomDrawNodeCell(...);
    }
    vừa dùng Google mới biết cái treelist là cái gì, tìm hoài trong VS toolbox mà không thấy
    bạn nói "các event thường chạy liên tục" là sao, như sự kiện click chỉ xảy ra khi click chuột đó chớ, nó đâu có xảy ra liên tục
    còn sự kiện bạn nói, CustomDrawNodeCell, theo tôi đoán theo tên gọi, thì nó chỉ xảy ra mỗi khi 1 nodecell cần phải được vẽ lại(khi scroll treelist, khi node expand hay collapse...), và khi đó hàm xử lí sự kiện của CustomDrawNodeCell được gọi, cần gì bạn phải gọi nó ở trong code, có bao nhiêu nodecell cần vẽ lại thì sự kiện này sẽ xảy ra bấy nhiêu lần, không biết nói vậy có đúng không nữa
    cái treelist này ở trong thư viện nào vậy?
    không hiểu code của nkchicu1612 nhưng như nói ở trên, bạn không phải gọi nó trong forrm load, nó sẽ được gọi khi cần. Còn nếu bạn vẫn muốn gọi bằng code thì bạn phải tự tạo 1 đối tượng CustomDrawNodeCellEventArgs của bạn rồi truyền vào hàm chứ sao có thể truyền 1 đối tượng EventArgs qua được

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nkchicu1612
    private void treeList1_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e)
    {
    if(!IsRun)
    {
    return;
    }
    //To do things
    }
    theo mình cách viết của bạn không thể gọi chạy được từ Form1_load được chắc chắn sẽ báo lỗi đối số đưa vào là EventArgs e vì CustomDrawNodeCellEventArgs e.

  5. #5
    Trích dẫn Gửi bởi dongtrien
    theo mình cách viết của bạn không thể gọi chạy được từ Form1_load được chắc chắn sẽ báo lỗi đối số đưa vào là EventArgs e vì CustomDrawNodeCellEventArgs e.
    Chạy trực tiếp luôn chứ ko cần chạy trong FormLoad()

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dongtrien
    các event thường chạy liên tục, các bạn có biết cách khai báo để sự kiện chạy 1 lần hoặc khi cần thì mới chạy được không ? ..
    Có cái gì là tự động, không gọi mà tự chạy không ? các CT khởi động cùng với Windows cũng cần được gọi (startup); đến windows (HDH) cũng phải cài đặt.
    //
    các event thường chạy liên tục ngoài tầm kiểm soát tức lập trình sai, không kiểm soát được nó.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dongtrien
    trong VS toolbox không có treelist là đúng rồi, ai cũng vậy thôi không phải riêng mình không biết thì hỏi bằng các phương tiện có thể tìm thông tin về nó, nó của bộ devexpress, nó làm việc giống như cây thư mục và tập tin, cái sự kiện event nó hay chạy đi chạy lại (mình nói chạy liên tục là hơi quá, do mình sử dụng từ diễn đạt không chính xác thôi) khi có sự thay đổi như kéo thanh cuộn,... nhưng có những lúc debug mình thấy không cần chạy lại event đó mà máy vẫn phải chạy lại, viết ở dạng sự kiện đã khó rồi mà chuyển các sự kiện đó thành 1 hàm để chạy khi mình vẽ lại thì càn khó hơn, mà phải viết làm sao cho nó chạy nhanh, code nhìn dể hiểu, theo bạn không không cần viết lại hàm thì cũng tùy chương trình làm gì ? bạn có thử treelist vừa load event các icon cho node có điều kiện biết trước, load event tô màu ô theo điều kiện biết trước và load event vẽ lại kiểu của ô nào đó chỉ định trước (ví dụ kiểu textbox sang checkbox),... khi bạn load nhiều cái event bạn sẽ thấy chạy chậm tất nhiên bạn cũng sẽ nghĩ cách khác thể viết lại event nào đó mà bạn cho là không cần thiết phải chạy đi chạy lại nhiều lần, bạn làm bài tập nhiều đi bạn sẽ thấy và bạn có nghĩ thử viết lại hàm thay thế event không, khó lắm đấy ?
    bạn làm bài tập nhiều đi bạn sẽ thấy ! Hóa ra bạn làm bài tập.
    //
    Tôi không làm bài tập nhiều năm rồi, có gì bỏ qua nghen.
    Văn ôn võ luyện mà.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dongtrien
    viết ở dạng sự kiện đã khó rồi mà chuyển các sự kiện đó thành 1 hàm để chạy khi mình vẽ lại thì càn khó hơn, mà phải viết làm sao cho nó chạy nhanh, code nhìn dể hiểu, theo bạn không không cần viết lại hàm thì cũng tùy chương trình làm gì ? bạn có thử treelist vừa load event các icon cho node có điều kiện biết trước, load event tô màu ô theo điều kiện biết trước và load event vẽ lại kiểu của ô nào đó chỉ định trước (ví dụ kiểu textbox sang checkbox),... khi bạn load nhiều cái event bạn sẽ thấy chạy chậm tất nhiên bạn cũng sẽ nghĩ cách khác thể viết lại event nào đó mà bạn cho là không cần thiết phải chạy đi chạy lại nhiều lần, bạn làm bài tập nhiều đi bạn sẽ thấy và bạn có nghĩ thử viết lại hàm thay thế event không, khó lắm đấy ?
    không hiểu bạn muốn gì nữa, tôi đâu khuyến khích bạn viết lại hàm vẽ đâu, chính bạn đã chọn cách đó đó chứ, thế bạn còn phàn nàn viết lại hàm vẽ là khó hay dễ gì nữa(tôi đoán là rất khó bởi bạn nói mỗi ô có nhiều kiểu). Như bên trên đã viết, tôi chỉ bảo bạn không cần gọi hàm vẽ vì khi sự kiện xảy ra thì hàm đã được gọi rồi
    Trích dẫn Gửi bởi dongtrien
    ...cái sự kiện event nó hay chạy đi chạy lại (mình nói chạy liên tục là hơi quá, do mình sử dụng từ diễn đạt không chính xác thôi) khi có sự thay đổi như kéo thanh cuộn,... nhưng có những lúc debug mình thấy không cần chạy lại event đó mà máy vẫn phải chạy lại
    cái tôi phân vân là lúc nào cần, lúc nào không cần, chẳng lẽ control của devexpress vẫn chưa được tối ưu, tôi đề nghị bạn thử code sau

    Mã:
    string str="";private void treeList1_CustomDrawNodeCell(object sender, CustomDrawNodeCellEventArgs e){    str+="sender.ToString()+"  :  " +e.ToString() +"
    ";}
    chạy 1 thời gian, không cần phải ở chế độ debug
    sau đó publish giá trị của biến str lên đây xem thử
    control đó có vẽ lại khi mouse hover không, nếu có thì có thể tương tự như mousehover trong winform(theo suy đoán thôi), khi ở chế độ debug (f11) và chuột nằm trên control thì form chỉ nháy lên rồi quay lại cửa sổ soan thảo, khi chạy hết code trong hàm xử lí sự kiện thì form lại nháy lên và cứ thế...

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    anh vn8hien62 dạng có học thức cao rồi mà thù dai và phát biểu toàn là kiến thức rộng rồi, em không biết tôi mới hỏi thôi, hihi...

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dongtrien
    anh vn8hien62 dạng có học thức cao rồi mà thù dai và phát biểu toàn là kiến thức rộng rồi, em không biết tôi mới hỏi thôi, hihi...
    Làm bài tập thì làm đi, nhớ thù oán làm gì !

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •