• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

tạo property ReadOnly cho các control không hộ trợ

Các thủ thuật liên quan đến ứng dụng, biểu mẫu và control

Điều hành viên: tungcan5diop, QUANITGROBEST

ShareToShare
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 167
Ngày tham gia: T.Năm 27/11/2008 4:04 pm
Has thanked: 1 time

tạo property ReadOnly cho các control không hộ trợ

Gửi bàigửi bởi ShareToShare » T.Ba 12/05/2009 5:14 pm

Tên: Property ReadOnly
Loại: Class
Ngôn ngữ lập trình: C#
Tác giả: ShareToShare
Chức năng: hổ trợ cho DateTimePicker , ComboBox, ... chưa có ReadOnly


Trước đây tôi đã từng hỏi vấn đề này nhưng có lẽ đây mới là câu trã lời
Đối với 1 số control mà .Net cung cấp ko có hộ trợ thuộc tính ReadOnly thì ta có thể tự tạo nó bằng cách tác động tới 3 phương thức : OnKeyPress, OnKeyDown và WndProc.
Giả sử tôi tạo thuộc tính ReadOnly cho DateTimePicker
Đầu tiên add 1 class vào project và đặt tên là RODateTimePicker

Mã: Chọn hết

  1. public class RODateTimePicker:DateTimePicker
  2.     {
  3.         bool readOnly;
  4.         public bool ReadOnly
  5.         {
  6.             get { return readOnly; }
  7.             set { readOnly = value; }
  8.         }
  9.         protected override void OnKeyPress(KeyPressEventArgs e)
  10.         {
  11.             if (readOnly)
  12.                 e.Handled = true;
  13.             base.OnKeyPress(e);
  14.         }
  15.         protected override void OnKeyDown(KeyEventArgs e)
  16.         {
  17.             if (readOnly)
  18.                 e.Handled = true;
  19.             base.OnKeyDown(e);
  20.         }
  21.         protected override void WndProc(ref Message m)
  22.         {
  23.             if ((m.Msg != 0x201 && m.Msg != 0x203) || !readOnly)
  24.                 base.WndProc(ref m);
  25.             else if (base.CanFocus)
  26.                 base.Focus();
  27.         }
  28.     }

bây giờ chỉ còn việc là build lại và vào toolbox lôi ra dùng thôi .
để kiểm tra lại xem dc chưa thì lôi nó ra và vào cửa sổ properties xem có thuộc tính ReadOnly chưa.
Đối với ComboBox cũng tương tự
Chúc vui =;



qanlh_soft
Bài viết: 4
Ngày tham gia: T.Sáu 25/04/2008 6:14 pm

Re: tạo property ReadOnly cho các control không hộ trợ

Gửi bàigửi bởi qanlh_soft » T.Năm 14/05/2009 11:24 am

thank much. Đỡ phải set color cho control khi ko readOnly đc :D


Quay về “[.NET] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách