• 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

Net - Simple ListBox And Combobox With MultiColumn

Bộ sưu tập các thư viện hỗ trợ sẳn cho Visual Basic .NET và C#

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

Nội qui chuyên mục
1. Gửi bài viết tại đây, Tester sẽ chuyển vào trong nếu bài viết đạt yêu cầu.
2. Gửi bài theo mẫu qui định: viewtopic.php?f=2&t=5
[ten][/ten]
[loai][/loai]
[ngonngu][/ngonngu]
[tacgia][/tacgia]
[chucnang][/chucnang]
[end][/end]
Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi anhtuyenbk » T.Ba 11/11/2008 1:04 pm

Tên: Simple ListBox And Combobox With MultiColumn
Loại: User Control
Ngôn ngữ lập trình: VB.Net
Tác giả: Nguyễn Anh Tuyên
Chức năng: Listbox, Combobox có nhiều cột



Simple ListBox And Combobox With MultiColumn


- Gần đây, mình được yêu cầu viết một cái ListBox hỗ trợ MultiColumn, hôm nay rảnh nên làm luôn và giới thiệu cho các bạn ai có nhu cầu sử dụng.
- Cái tên đã nói lên tất cả, ListBox và Combobox hỗ trợ nhiều Column.
Tập tin đính kèm
AccessSample.rar
(103.01 KiB) Đã tải 3384 lần
combocol.jpg
Sửa lần cuối bởi anhtuyenbk vào ngày T.Bảy 21/03/2009 11:31 pm với 2 lần sửa.


Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi tienlbhoc » T.Ba 11/11/2008 1:34 pm

cho chữ dài quá nó chồng lên nhau rất khó coi :)
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi hoangthu1974 » T.Ba 11/11/2008 1:45 pm

Rất hay.

Nhưng cái Column khi chứa dữ liệu quá dài sẽ đè lên column kế và dữ liệu khó nhìn. anhtuyenbk có thể sửa để nếu dữ liệu dài quá thì chỉ hiển thị vừa trong cột, phần còn lại thì ẩn đi được không?

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi hoangthu1974 » T.Ba 11/11/2008 2:41 pm

Mã: Chọn hết

  1.    Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
  2.         If Me.Items.Count = 0 Then Return
  3.         Dim dt As DataTable = Me.DataSource
  4.         e.DrawBackground()
  5.         Dim Pn As New Pen(Me.ForeColor)
  6.         Dim Br As Brush = Pn.Brush
  7.         If dt IsNot Nothing Then
  8.             Dim drawRect As RectangleF
  9.             Dim row As DataRowView = Me.Items(e.Index)
  10.             For Each item As ColumnItem In LstColumn
  11.                 drawRect = New RectangleF(item.X, e.Bounds.Y, item.Width, e.Bounds.Height)
  12.                 e.Graphics.DrawString(row(item.Name), Me.Font, Br, drawRect)
  13.             Next
  14.         Else
  15.             e.Graphics.DrawString(Me.Items(e.Index).ToString(), Me.Font, Brushes.Black, 0, e.Bounds.Y)
  16.         End If
  17.         e.DrawFocusRectangle()
  18.     End Sub


Thay đoạn code này trong ListboxMultiColumn.vb để cho ListBoxMultiColumn chỉ hiển thị theo giới hạn của cột và có màu chữ đúng với màu chữ đã chọn.

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi anhtuyenbk » T.Ba 11/11/2008 3:16 pm

Thank hoangthu1974 đã fix giùm :D
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

tindl88
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 363
Ngày tham gia: T.Bảy 26/04/2008 6:10 pm
Has thanked: 16 time
Been thanked: 10 time

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi tindl88 » T.Ba 11/11/2008 6:03 pm

Em mù .NET
Cái này xài cho VB6 dc không anh. Nhìn đã quá.
cứng nhắc...vớ vẩn

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi tienlbhoc » T.Ba 11/11/2008 6:07 pm

không dùng được đâu :)
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi anhtuyenbk » T.Ba 11/11/2008 6:35 pm

Cái này chỉ dùng cho Net thôi, ko dùng được cho VB6 đâu.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi anhtuyenbk » T.Bảy 15/11/2008 3:52 pm

Đã làm thì làm cho tới cùng.
Tiếp tục tung ra phiên bản Combobox hỗ trợ MultiColumn up ở trang đầu tiên.
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

Hình đại diện của người dùng
Dang Minh Du
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 531
Ngày tham gia: T.Tư 02/04/2008 2:08 pm
Đến từ: RGames Team
Has thanked: 3 time
Been thanked: 17 time
Liên hệ:

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi Dang Minh Du » T.Bảy 15/11/2008 4:11 pm

tindl88 đã viết:Em mù .NET
Cái này xài cho VB6 dc không anh. Nhìn đã quá.

Tự viết 1 cái mà sài đi :) (kế thừa mấy cái mà viết lại thui :D )
~°Dòng Sông Mùa Thu°~
Studying...!

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi tienlbhoc » T.Bảy 15/11/2008 4:15 pm

xem code listbox này rồi , code của bác tuyên có 30 dòng đổ lại thôi ;)) . Bảo bác anhtuyen đóng gói thành dll để mình dùng với , ai dè lão lại lười , vậy thì buộc lòng mình phải .... convert sang c# xài đỡ thôi >:)
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

Hình đại diện của người dùng
anhtuyenbk
Guru
Guru
Bài viết: 1311
Ngày tham gia: T.Năm 22/09/2005 4:12 pm
Đến từ: Một nơi chừa từng biết, chưa từng nghe, chưa từng thấy
Been thanked: 38 time

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi anhtuyenbk » T.Bảy 15/11/2008 4:21 pm

tienlbhoc đã viết:xem code listbox này rồi , code của bác tuyên có 30 dòng đổ lại thôi ;)) . Bảo bác anhtuyen đóng gói thành dll để mình dùng với , ai dè lão lại lười , vậy thì buộc lòng mình phải .... convert sang c# xài đỡ thôi >:)

Net có hỗ trợ thừa kế nên mới 30 dòng.
Chứ còn VB6 à ko hỗ trợ thừa kế, viết 1000 dòng ko biết đủ chưa đó >:) >:)
Kiếm cơm cho qua ngày tháng
https://www.facebook.com/pinduphongpisenchinhhang

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

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi ShareToShare » T.Năm 27/11/2008 4:40 pm

các bác có ai biết viết cái Combobox with MultiColumn trong datagridview ( của C# ) không vậy ??
Nếu có thì share cho mọi người dùng với . Còn không có thì mình cùng bắt tay vào làm và thảo luận được không ???

Hình đại diện của người dùng
NoBi
Quản trị
Quản trị
Bài viết: 948
Ngày tham gia: T.Ba 18/03/2008 1:22 pm
Đến từ: Sài Gòn
Has thanked: 50 time
Been thanked: 66 time
Liên hệ:

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi NoBi » T.Sáu 28/11/2008 9:28 am

File đính kèm ở trên có luôn Combobox with MultiColumn rồi. Chỉ cần bỏ công convert qua C#.
:>

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

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi ShareToShare » T.Tư 29/04/2009 2:05 pm

cái này mình thử chuyển sang C# nhưng xuất hiện các lỗi sau : mọi người chú ý tới
phần màu đỏ đậm thôi

Mã: Chọn hết

  1. public class ComboBoxMultiCol:System.Windows.Forms.ComboBox
  2.     {
  3.         public ComboBoxMultiCol()
  4.         {
  5.             this.DrawMode =
  6.     System.Windows.Forms.DrawMode.OwnerDrawFixed;
  7.         }
  8.         protected override void
  9. OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
  10.     {
  11.         //Ko co item thoat ra ngoai
  12.                 if
  13. (this.Items.Count == 0) return;         //
  14.        [b][color=#FF0000] DataTable dt = this.DataSource;[/color][/b]
  15.         e.DrawBackground();
  16.         //Draw du lieu trong table
  17.         if (dt != null & dt.Rows.Count > 0)
  18. {
  19.             DataRowView row = this.[b][color=#FF0000]Items[/color][/b](e.Index);// chổ này báo Items là property mà dùng như một method
  20.             foreach (ColumnItem item in LstColumn)
  21.             {
  22.                 //Ve cac Tex len dong
  23.                
  24. e.Graphics.DrawString([b][color=#FF0000]row(item.Name)[/color][/b], this.Font, brush, new
  25. RectangleF(item.X + 20, e.Bounds.Y, item.Width, e.Bounds.Height)); //chổ này báo là row dùng như 1 method
  26.             }
  27.         }
  28.         else {
  29.            
  30. //e.Graphics.DrawLine(Pens.Red, 0, e.Bounds.Y + e.Bounds.Height - 2,
  31. //e.Bounds.Width, e.Bounds.Y + e.Bounds.Height - 2)
  32.             //Draw du lieu binh thuong
  33.            
  34. e.Graphics.DrawString(this.[b][color=#FF0000]Items[/color][/b](e.Index).ToString(), this.Font, brush,
  35. 0, e.Bounds.Y); // Items dùng như 1 method
  36.         }
  37.         e.DrawFocusRectangle();
  38.         base.OnDrawItem(e);
  39.     }
  40.         public override string Text
  41.         {
  42.             get { return base.Text; }
  43.             set { base.Text = "a"; }
  44.         }
  45.         SolidBrush brush = new
  46. SolidBrush(Color.Black);
  47.         //co ve text
  48.         public override System.Drawing.Color ForeColor
  49.         {
  50.             get { return base.ForeColor; }
  51.             set
  52.             {
  53.                 base.ForeColor = value;
  54.                 brush.Color = value;
  55.             }
  56.         }
  57.         //Quan ly column item
  58.         private class ColumnItem
  59.         {
  60.             internal string Name;
  61.             internal int Width;
  62.             internal int X;
  63.             public ColumnItem(string pName, int pWidth)
  64.             {
  65.                 this.Name = pName;
  66.                 this.Width = pWidth;
  67.             }
  68.             public int GetXWidth()
  69.             {
  70.                 return X + Width;
  71.             }
  72.         }
  73.         //Danh sách các column
  74.         List<ColumnItem> LstColumn = new List<ColumnItem>();
  75.         //Add Column
  76.         public void AddColumn(string Name, int Width)
  77.         {
  78.             ColumnItem p = new ColumnItem(Name, Width);
  79.             if (LstColumn.Count == 0)
  80.             {
  81.                 p.X = 0;
  82.             }
  83.             else
  84.             {
  85.                 p.X =
  86.     [b][color=#FF0000]LstColumn[/color][/b](LstColumn.Count - 1).GetXWidth();// LsrColums dùng như một method
  87.             }
  88.             LstColumn.Add(p);
  89.         }
  90.         //Xoa tat ca Column
  91.         public void ClearAllColumn()
  92.         {
  93.             LstColumn.Clear();
  94.         }
  95.         private void InitializeComponent()
  96.         {
  97.             this.SuspendLayout();
  98.             //
  99.             //ComboBoxMultiCol
  100.             //
  101.             this.DropDownStyle =
  102.     System.Windows.Forms.ComboBoxStyle.DropDownList;
  103.  
  104.             this.ResumeLayout(false);
  105.         }
  106.  

ai biết thì làm ơn fix lại dùm
thanks!

betapcode
Bài viết: 4
Ngày tham gia: T.Sáu 26/03/2010 11:50 am

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi betapcode » T.Tư 31/03/2010 11:32 pm

anhtuyenbk đã viết:Đã làm thì làm cho tới cùng.
Tiếp tục tung ra phiên bản Combobox hỗ trợ MultiColumn up ở trang đầu tiên.


AnhtuyenBK ơi ! Em dow bản mới này của anh về chạy được rồi. Em sài cái Combo của anh trả về 1 Datarowview lên em sài cái chuyển đổi DirectCast để lấy Mã Add vào CSDL được rồi, nhưng khi em Edit dữ liệu từ FORM thì nó báo lỗi. Anh giúp em với.

HoangTuBe
Thành viên tích cực
Thành viên tích cực
Bài viết: 180
Ngày tham gia: T.Năm 02/04/2009 1:38 pm
Has thanked: 10 time
Been thanked: 2 time

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi HoangTuBe » T.Ba 13/09/2011 12:54 pm

Xin chào!

Đúng đây là cái mình đang tìm hiểu. Nhưng hỏi hoài không ai hướng dẫn hết. Hôm nay thấy bài viết nào quá đúng ý. Nhưng đọc cũng không hiểu hết được cái nguyên lý hoạt động và kế thừa như thế nào.
Bạn nào có thể giải thích sơ lược giúp mình 2 cái control này với.
Xin chân thành cám ơn!

HoangTuBe
Thành viên tích cực
Thành viên tích cực
Bài viết: 180
Ngày tham gia: T.Năm 02/04/2009 1:38 pm
Has thanked: 10 time
Been thanked: 2 time

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi HoangTuBe » T.Hai 10/10/2011 11:06 am

Chào các bạn!

Trong khi mình DrawString thì có một số trường hợp số ký tự chữ vượt quá độ rộng của rectangle. Vậy làm thế nào để kiểm tra chự có vượt quá độ rộng rectangle hay không, nếu có thì chỉ DrawString vừa đủ và có kèm theo dấu "...".
Mong các bạn giúp đỡ.

muaphonui_2010
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 474
Ngày tham gia: T.Sáu 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 173 time
Been thanked: 27 time
Liên hệ:

Re: Net - Simple ListBox And Combobox With MultiColumn

Gửi bàigửi bởi muaphonui_2010 » CN 04/03/2012 4:27 pm

anhtuyenbk đã viết:Tên: Simple ListBox And Combobox With MultiColumn
Loại: User Control
Ngôn ngữ lập trình: VB.Net
Tác giả: Nguyễn Anh Tuyên
Chức năng: Listbox, Combobox có nhiều cột



Simple ListBox And Combobox With MultiColumn


- Gần đây, mình được yêu cầu viết một cái ListBox hỗ trợ MultiColumn, hôm nay rảnh nên làm luôn và giới thiệu cho các bạn ai có nhu cầu sử dụng.
- Cái tên đã nói lên tất cả, ListBox và Combobox hỗ trợ nhiều Column.


Với bài mẫu này mình về mình chỉnh thuộc tính của ComboBoxMultiCol1 : DropDownstyle = DropDown ( nguyên văn của nó là DropDownList) thì không được.( với mục đích là để gỏ vào và cho nó tìm đến mục mình cần)
Vậy cho mình hỏi : mình muốn cai ComboBoxMultiCol1 cho phép mình gõ vào và lọc dần đến mục mình cần.( chứ combobox 1000 dòng thì lôi chuột chắc đuối mất hjhhj)
Mình thấy nó hiện nhiều cột như vậy là hay rồi , nhưng làm thế nào để cho nó cho ta gõ vào và khi chọn ( hay enter) thì nó chỉ lấy 1 cột thôi. ( có nghĩa là hiện thì nhiều cột nhưng chỉ lấy 1 cột thôi.
Chứ nếu hiện nhiều trường vô 1 cột và lấy y chan cột đó thì combobox bình thường cũng làm được , bằng cách ở query ta tạo 1 trường ghép nối các trường khác lại và từ trường ghép này ta cho ra Combobox.

hoangchung333
Bài viết: 2
Ngày tham gia: T.Tư 04/12/2013 8:30 pm

Re: Net - Simple ListBox With MultiColumn

Gửi bàigửi bởi hoangchung333 » T.Sáu 25/04/2014 3:35 pm

Thay đoạn code này trong ListboxMultiColumn.vb để cho ListBoxMultiColumn chỉ hiển thị theo giới hạn của cột và có màu chữ đúng với màu chữ đã chọn.
Cái "ListboxMultiColumn.vb " nằm ở đâu vậy anh. cảm ơn nhiều


Quay về “[.NET] Module, Class, UserControl, DLL”

Đ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.0 khách