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ý.
Trang 3 trên tổng số 5 Đầu tiênĐầu tiên 12345 Cuối cùngCuối cùng
Từ 21 tới 30 trên tổng số 45 kết quả

Đề tài: How to design new controls

  1. #21
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    904

    Mặc định How to design new controls

    Chi mà gắt quá vậy Monre, chủ thớt muốn hỏi bạn biết thì trả lời, hoặc đi thẳng vào hướng dẫn cụ thể chứ sao cứ hoài công lòng vòng mãi. Có người ý kiến thì đưa mã theo kiểu thậm thụt như có ý bắt người phải cầu lụy, mã đó bán có ra tiền không mà phải mã hóa rồi dấu như .... Tôi không có hứng thú với C# nhưng thấy bạn xem người khác đều là trẻ nít nên có vài lời. Trên C++ thì yêu cầu của chủ thớt chẳng cần tìm hiểu nhiều cũng làm được, trên C# thì có lẽ cần khoảng 30' viết được ngay một Demo thôi !!! Đừng xem mọi người đều chưa biết bò chớ lo học chạy còn bạn thì đạt mức độ điều khiển và kiểm soát được ngôn ngữ và hành động. Mãi nhìn lên trời thì có ngày đạp phải...
    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. #22
    Ngày gia nhập
    08 2017
    Bài viết
    3,454

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Chi mà gắt quá vậy Monre, chủ thớt muốn hỏi bạn biết thì trả lời, hoặc đi thẳng vào hướng dẫn cụ thể chứ sao cứ hoài công lòng vòng mãi. Có người ý kiến thì đưa mã theo kiểu thậm thụt như có ý bắt người phải cầu lụy, mã đó bán có ra tiền không mà phải mã hóa rồi dấu như .... Tôi không có hứng thú với C# nhưng thấy bạn xem người khác đều là trẻ nít nên có vài lời. Trên C++ thì yêu cầu của chủ thớt chẳng cần tìm hiểu nhiều cũng làm được, trên C# thì có lẽ cần khoảng 30' viết được ngay một Demo thôi !!! Đừng xem mọi người đều chưa biết bò chớ lo học chạy còn bạn thì đạt mức độ điều khiển và kiểm soát được ngôn ngữ và hành động. Mãi nhìn lên trời thì có ngày đạp phải...
    Thêm một thầy dùi, chỉ muốn giảng đạo đức, nghe mà kinh !
    Hoang chỉ được thì cứ chỉ, có ai cấm, Hoang ngâm cứu làm được không ai cản, việc chi ra định mức 30 giây hay 3 năm.

    Cơm cha áo mẹ công thầy, mài đít trên ghế bao nhiêu năm mà không bán được thì học để cống hết à ?

  3. #23
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    904

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Thêm một thầy dùi, chỉ muốn giảng đạo đức, nghe mà kinh !
    Hoang chỉ được thì cứ chỉ, có ai cấm, Hoang ngâm cứu làm được không ai cản, việc chi ra định mức 30 giây hay 3 năm.

    Cơm cha áo mẹ công thầy, mài đít trên ghế bao nhiêu năm mà không bán được thì học để cống hết à ?
    Vậy cái mã của bạn mà bạn không cho ai đọc đó bán được nhiêu vậy ?

  4. #24
    Ngày gia nhập
    08 2017
    Bài viết
    3,454

    Hoang trả giá xem, được bao nhiêu ?

    Bán cho xin viên giá khác, bán cho cty viết control giá khác.

  5. #25
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    904

    Trích dẫn Nguyên bản được gửi bởi Monre Xem bài viết
    Hoang trả giá xem, được bao nhiêu ?

    Bán cho xin viên giá khác, bán cho cty viết control giá khác.
    Vẫn chưa hiểu ra à, sao chậm tiêu vậy ?

  6. #26
    Ngày gia nhập
    08 2017
    Bài viết
    3,454

    Mặc định How to design new controls

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Vẫn chưa hiểu ra à, sao chậm tiêu vậy ?
    Ai kia có chậm tiêu hay không thì liên quan chi đến tôi

  7. #27
    Ngày gia nhập
    03 2017
    Bài viết
    21

    E xin phép chen ngang ạ.
    Mỗi người nhịn nhau một chút cho êm chuyện nhé, có gì to tát đâu mà phải này nọ lo chai lên như vậy. Mỗi người có đều có chính kiến riêng của họ, có lòng thì share hoặc ngược lại. Đối với em, kiến thức ở trên là cần thiết, nhưng không phải là điều cấp thiết, có cũng được, không có cũng chẳng sao cả. Còn nữa, em không có hứng thú với cái " giá xin viên ", người khôn ngoan để tiền mua " cần câu " chứ không ai đem đi mua " con cá " đâu ạ

  8. #28
    Ngày gia nhập
    08 2017
    Bài viết
    3,454

    Rất tốt, người thực lòng thì ít, kẻ ngóng thì nhiều

  9. #29
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    904

    Chào Monre nhé, không tranh cãi thêm với bạn.
    Để thêm chút thông tin cho congdongc041.

    Để điều khiển có thể hiển thị các thuộc tính trên TasksPane khi thiết kế trong VS, thì mã điều khiển đó cần thêm các dẫn xuất từ 2 lớp
    1. System.Windows.Forms.Design.ControlDesigner
    2. System.Windows.Forms.Design.DesignerActionList

    Thực hành:
    1. Tạo dự án điều khiển trong VS: Windows Forms Control Library
    2. Trong Solution Explorer: Nhấn chuột phải lên UserControl1.cs => Rename. Đổi tên tập tin theo tên phù hợp của bạn, VS phàn nàn đôi chút nhưng bạn cứ Yes là xong.
    3. Trình đơn Project => <Add Reference...>. Trong hộp thoại bung <Assemblies> ra rồi chọn <Framework>. Bên cánh phải tìm tới "System.Design" rồi chọn nó và check vào dấu check phía trước. OK đóng hộp thoại.
    4. Mở tập tin mã trên bộ soạn thảo và soạn thảo theo mã bên dưới. (Tôi đã đổi tên trong bước 2 thành DemoCtl).
    Visual C# Code:
    1. using System.ComponentModel;
    2. using System.ComponentModel.Design;
    3. using System.Drawing;
    4. using System.Windows.Forms;
    5. using System.Windows.Forms.Design;
    6.  
    7. namespace DemoCtl
    8. {
    9.     [Designer(typeof(DemoCtlDesigner))]             // Attribute cho thiết kế
    10.     public partial class DemoCtl: UserControl
    11.     {
    12.         public DemoCtl()
    13.         {
    14.             InitializeComponent();
    15.         }
    16.  
    17.         // Một số biến nội bộ
    18.         private Color m_crLeft = Color.Red;
    19.         private Color m_crCenter = Color.Green;
    20.         private Color m_crRight = Color.Blue;
    21.  
    22.         // Attribute để nhóm 3 thuộc tính vào một chỗ trong cửa sổ Property khi xem theo chế độ nhóm
    23.         [Category("Màu sắc"), Description("Màu ô bên trái")]
    24.         public Color LeftColor
    25.         {
    26.             get { return m_crLeft; }
    27.             set { m_crLeft = value; Invalidate(); }
    28.         }
    29.  
    30.         [Category("Màu sắc"), Description("Màu ô ở giữa")]
    31.         public Color CenterColor
    32.         {
    33.             get { return m_crCenter; }
    34.             set { m_crCenter = value; Invalidate(); }
    35.         }
    36.  
    37.         [Category("Màu sắc"), Description("Màu ô bên phải")]
    38.         public Color RightColor
    39.         {
    40.             get { return m_crRight; }
    41.             set { m_crRight = value; Invalidate(); }
    42.         }
    43.  
    44.         // Viết đè hàm vẽ điều khiển
    45.         protected override void OnPaint(PaintEventArgs pe)
    46.         {
    47.             int iPiece = ClientSize.Width / 3;
    48.             Rectangle rcLeft = new Rectangle(0, 0, iPiece, ClientSize.Height);
    49.             Rectangle rcCenter = new Rectangle(iPiece, 0, iPiece, ClientSize.Height);
    50.             Rectangle rcRight = new Rectangle(iPiece * 2, 0, ClientSize.Width - iPiece * 2, ClientSize.Height);
    51.  
    52.             SolidBrush sbLeft = new SolidBrush(m_crLeft);
    53.             SolidBrush sbCenter = new SolidBrush(m_crCenter);
    54.             SolidBrush sbRight = new SolidBrush(m_crRight);
    55.  
    56.             // Tô màu 3 vùng
    57.             pe.Graphics.FillRectangle(sbLeft, rcLeft);
    58.             pe.Graphics.FillRectangle(sbCenter, rcCenter);
    59.             pe.Graphics.FillRectangle(sbRight, rcRight);
    60.         }
    61.     }
    62.  
    63.     public class DemoCtlDesigner : ControlDesigner
    64.     {
    65.         private DesignerActionListCollection actionList;
    66.         public override DesignerActionListCollection ActionLists
    67.         {
    68.             get
    69.             {
    70.                 if (actionList == null)
    71.                     actionList = new DesignerActionListCollection(new[] { new DemoControlActionList(this) });
    72.                 return actionList;
    73.             }
    74.         }
    75.     }
    76.  
    77.     public class DemoControlActionList : DesignerActionList
    78.     {
    79.         ControlDesigner designer;
    80.         DemoCtl control;
    81.         public DemoControlActionList(ControlDesigner designer) : base(designer.Component)
    82.         {
    83.             this.designer = designer;
    84.             control = (DemoCtl)designer.Control;
    85.         }
    86.        
    87.         public Color LeftColor
    88.         {
    89.             get { return control.LeftColor; }
    90.             set { TypeDescriptor.GetProperties(Component)["LeftColor"].SetValue(Component, value); }
    91.         }
    92.         public Color CenterColor
    93.         {
    94.             get { return control.CenterColor; }
    95.             set { TypeDescriptor.GetProperties(Component)["CenterColor"].SetValue(Component, value); }
    96.         }
    97.         public Color RightColor
    98.         {
    99.             get { return control.RightColor; }
    100.             set { TypeDescriptor.GetProperties(Component)["RightColor"].SetValue(Component, value); }
    101.         }
    102.  
    103.         public override DesignerActionItemCollection GetSortedActionItems()
    104.         {
    105.             return new DesignerActionItemCollection()
    106.             {
    107.                 new DesignerActionHeaderItem("Màu sắc"),
    108.                 new DesignerActionPropertyItem("LeftColor", "Màu bên trái"),
    109.                 new DesignerActionPropertyItem("CenterColor", "Màu ở giữa"),
    110.                 new DesignerActionPropertyItem("RightColor", "Màu bên phải"),
    111.             };
    112.         }
    113.     }
    114. }

    Biên dịch, rồi tạo ứng dụng kiểm tra.

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Demo1.jpg
Lần xem:	5
Size:		112.5 KB
ID:		64588
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Demo2.jpg
Lần xem:	8
Size:		148.5 KB
ID:		64589

  10. #30
    Ngày gia nhập
    03 2017
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Chào Monre nhé, không tranh cãi thêm với bạn.
    Để thêm chút thông tin cho congdongc041.

    Để điều khiển có thể hiển thị các thuộc tính trên TasksPane khi thiết kế trong VS, thì mã điều khiển đó cần thêm các dẫn xuất từ 2 lớp
    1. System.Windows.Forms.Design.ControlDesigner
    2. System.Windows.Forms.Design.DesignerActionList

    Thực hành:
    1. Tạo dự án điều khiển trong VS: Windows Forms Control Library
    2. Trong Solution Explorer: Nhấn chuột phải lên UserControl1.cs => Rename. Đổi tên tập tin theo tên phù hợp của bạn, VS phàn nàn đôi chút nhưng bạn cứ Yes là xong.
    3. Trình đơn Project => <Add Reference...>. Trong hộp thoại bung <Assemblies> ra rồi chọn <Framework>. Bên cánh phải tìm tới "System.Design" rồi chọn nó và check vào dấu check phía trước. OK đóng hộp thoại.
    4. Mở tập tin mã trên bộ soạn thảo và soạn thảo theo mã bên dưới. (Tôi đã đổi tên trong bước 2 thành DemoCtl).
    Visual C# Code:
    1. using System.ComponentModel;
    2. using System.ComponentModel.Design;
    3. using System.Drawing;
    4. using System.Windows.Forms;
    5. using System.Windows.Forms.Design;
    6.  
    7. namespace DemoCtl
    8. {
    9.     [Designer(typeof(DemoCtlDesigner))]             // Attribute cho thiết kế
    10.     public partial class DemoCtl: UserControl
    11.     {
    12.         public DemoCtl()
    13.         {
    14.             InitializeComponent();
    15.         }
    16.  
    17.         // Một số biến nội bộ
    18.         private Color m_crLeft = Color.Red;
    19.         private Color m_crCenter = Color.Green;
    20.         private Color m_crRight = Color.Blue;
    21.  
    22.         // Attribute để nhóm 3 thuộc tính vào một chỗ trong cửa sổ Property khi xem theo chế độ nhóm
    23.         [Category("Màu sắc"), Description("Màu ô bên trái")]
    24.         public Color LeftColor
    25.         {
    26.             get { return m_crLeft; }
    27.             set { m_crLeft = value; Invalidate(); }
    28.         }
    29.  
    30.         [Category("Màu sắc"), Description("Màu ô ở giữa")]
    31.         public Color CenterColor
    32.         {
    33.             get { return m_crCenter; }
    34.             set { m_crCenter = value; Invalidate(); }
    35.         }
    36.  
    37.         [Category("Màu sắc"), Description("Màu ô bên phải")]
    38.         public Color RightColor
    39.         {
    40.             get { return m_crRight; }
    41.             set { m_crRight = value; Invalidate(); }
    42.         }
    43.  
    44.         // Viết đè hàm vẽ điều khiển
    45.         protected override void OnPaint(PaintEventArgs pe)
    46.         {
    47.             int iPiece = ClientSize.Width / 3;
    48.             Rectangle rcLeft = new Rectangle(0, 0, iPiece, ClientSize.Height);
    49.             Rectangle rcCenter = new Rectangle(iPiece, 0, iPiece, ClientSize.Height);
    50.             Rectangle rcRight = new Rectangle(iPiece * 2, 0, ClientSize.Width - iPiece * 2, ClientSize.Height);
    51.  
    52.             SolidBrush sbLeft = new SolidBrush(m_crLeft);
    53.             SolidBrush sbCenter = new SolidBrush(m_crCenter);
    54.             SolidBrush sbRight = new SolidBrush(m_crRight);
    55.  
    56.             // Tô màu 3 vùng
    57.             pe.Graphics.FillRectangle(sbLeft, rcLeft);
    58.             pe.Graphics.FillRectangle(sbCenter, rcCenter);
    59.             pe.Graphics.FillRectangle(sbRight, rcRight);
    60.         }
    61.     }
    62.  
    63.     public class DemoCtlDesigner : ControlDesigner
    64.     {
    65.         private DesignerActionListCollection actionList;
    66.         public override DesignerActionListCollection ActionLists
    67.         {
    68.             get
    69.             {
    70.                 if (actionList == null)
    71.                     actionList = new DesignerActionListCollection(new[] { new DemoControlActionList(this) });
    72.                 return actionList;
    73.             }
    74.         }
    75.     }
    76.  
    77.     public class DemoControlActionList : DesignerActionList
    78.     {
    79.         ControlDesigner designer;
    80.         DemoCtl control;
    81.         public DemoControlActionList(ControlDesigner designer) : base(designer.Component)
    82.         {
    83.             this.designer = designer;
    84.             control = (DemoCtl)designer.Control;
    85.         }
    86.        
    87.         public Color LeftColor
    88.         {
    89.             get { return control.LeftColor; }
    90.             set { TypeDescriptor.GetProperties(Component)["LeftColor"].SetValue(Component, value); }
    91.         }
    92.         public Color CenterColor
    93.         {
    94.             get { return control.CenterColor; }
    95.             set { TypeDescriptor.GetProperties(Component)["CenterColor"].SetValue(Component, value); }
    96.         }
    97.         public Color RightColor
    98.         {
    99.             get { return control.RightColor; }
    100.             set { TypeDescriptor.GetProperties(Component)["RightColor"].SetValue(Component, value); }
    101.         }
    102.  
    103.         public override DesignerActionItemCollection GetSortedActionItems()
    104.         {
    105.             return new DesignerActionItemCollection()
    106.             {
    107.                 new DesignerActionHeaderItem("Màu sắc"),
    108.                 new DesignerActionPropertyItem("LeftColor", "Màu bên trái"),
    109.                 new DesignerActionPropertyItem("CenterColor", "Màu ở giữa"),
    110.                 new DesignerActionPropertyItem("RightColor", "Màu bên phải"),
    111.             };
    112.         }
    113.     }
    114. }

    Biên dịch, rồi tạo ứng dụng kiểm tra.

    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Demo1.jpg
Lần xem:	5
Size:		112.5 KB
ID:		64588
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Demo2.jpg
Lần xem:	8
Size:		148.5 KB
ID:		64589
    Cảm ơn bác rất rất nhiều ạ
    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ý.

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