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

Đề tài: Tạo Combobox nhiều cột trên C# như thế nào?

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    7

    Mặc định Tạo Combobox nhiều cột trên C# như thế nào?

    Trong C# mình muốn tạo combobox thể hiện được nhiều cột. Mong các bạn chỉ giúp.

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    40

    Theo mình hiểu có lẽ bạn muốn Combobox mang thông tin của 2 fields nào đó trong 1 bảng csdl. Nếu vậy có thể thực hiện được bằng cách gắn bảng này với combobox. Thuộc tính DisplayMember của Combobox sẽ hiện thị text của trường thứ nhất, thuộc tính ValueMember của Combobox sẽ cho giá trị tương ứng của trường 1(gán thuộc tính này cho trường thứ 2 trong bảng).

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    121

    ý của mình là ConboBox hiển thị cùng lúc 2 fields í!
    ví dụ click vào ComboBox thì sẻ thấy MaNV,TenNV luôn dc ho^ng?

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Về nguyên tắc là được, nếu bạn bật ownerdraw lên thì bao nhiêu cột bạn đều làm được cả.

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    121

    Bạn có thể nói rõ hơn về ownerdraw dc ko ạ! Thanks............

  6. #6
    Ngày gia nhập
    01 2008
    Bài viết
    120

    Mặc định Tạo Combobox nhiều cột trên C# như thế nào?

    Dại thế.
    Tôi ko làm overdraw làm chi cho mệt.
    Nếu là tôi. Tôi sẽ làm thế này.
    1. Về datasource thì ko nói j rùi
    2. Gán cbo.ValueMember=MaNV
    3. foreach(SV sv in dsSV )
    {
    string s=SV.MaSV +"| " +SV.TenSV;
    cbo.Items.Add(s);
    }

    Vậy là ok rùi còn j.
    Đã mất công nghĩ thì nghĩ mẹ cái thật lớn vào !
    Y!H: trinhhoaithanh1905

  7. #7
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    78

    đó là họ xây dựng 1 cotrols khác rồi, combobox chuẩn kô làm thế được, đọc thêm về Custom Coltrols

  8. #8
    Ngày gia nhập
    09 2009
    Bài viết
    1

    Mặc định Bạn sử dụng MultiColumnsComboBox

    Tạo 1 class với code sau và sử dụng giống ComboBox thôi
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4. using System.Windows.Forms;
    5. using System.ComponentModel;
    6. using System.Drawing;
    7. using System.Globalization;
    8.  
    9. public class MultiColumnComboBox : ComboBox
    10. {
    11.     public MultiColumnComboBox()
    12.     {
    13.         DrawMode = DrawMode.OwnerDrawVariable;
    14.     }
    15.  
    16.     public new DrawMode DrawMode
    17.     {
    18.         get
    19.         {
    20.             return base.DrawMode;
    21.         }
    22.         set
    23.         {
    24.             if (value != DrawMode.OwnerDrawVariable)
    25.             {
    26.                 throw new NotSupportedException("Cần phải có DrawMode.OwnerDrawVariable");
    27.             }
    28.             base.DrawMode = value;
    29.         }
    30.     }
    31.  
    32.     public new ComboBoxStyle DropDownStyle
    33.     {
    34.         get
    35.         {
    36.             return base.DropDownStyle;
    37.         }
    38.         set
    39.         {
    40.             if (value == ComboBoxStyle.Simple)
    41.             {
    42.                 throw new NotSupportedException("ComboBoxStyle không hỗ trợ");
    43.             }
    44.             base.DropDownStyle = value;
    45.         }
    46.     }
    47.  
    48.     protected override void OnDataSourceChanged(EventArgs e)
    49.     {
    50.         base.OnDataSourceChanged(e);
    51.  
    52.         InitializeColumns();
    53.     }
    54.  
    55.     protected override void OnValueMemberChanged(EventArgs e)
    56.     {
    57.         base.OnValueMemberChanged(e);
    58.  
    59.         InitializeValueMemberColumn();
    60.     }
    61.  
    62.     protected override void OnDropDown(EventArgs e)
    63.     {
    64.         base.OnDropDown(e);
    65.         this.DropDownWidth = (int)CalculateTotalWidth();
    66.     }
    67.  
    68.     const int columnPadding = 5;
    69.     private float[] columnWidths = new float[0];
    70.     private String[] columnNames = new String[0];
    71.     private int valueMemberColumnIndex = 0;
    72.  
    73.     private void InitializeColumns()
    74.     {
    75.         PropertyDescriptorCollection propertyDescriptorCollection = DataManager.GetItemProperties();
    76.  
    77.         columnWidths = new float[propertyDescriptorCollection.Count];
    78.         columnNames = new String[propertyDescriptorCollection.Count];
    79.  
    80.         for (int colIndex = 0; colIndex < propertyDescriptorCollection.Count; colIndex++)
    81.         {
    82.             String name = propertyDescriptorCollection[colIndex].Name;
    83.             columnNames[colIndex] = name;
    84.         }
    85.     }
    86.  
    87.     private void InitializeValueMemberColumn()
    88.     {
    89.         int colIndex = 0;
    90.         foreach (String columnName in columnNames)
    91.         {
    92.             if (String.Compare(columnName, ValueMember, true, CultureInfo.CurrentUICulture) == 0)
    93.             {
    94.                 valueMemberColumnIndex = colIndex;
    95.                 break;
    96.             }
    97.             colIndex++;
    98.         }
    99.     }
    100.  
    101.     private float CalculateTotalWidth()
    102.     {
    103.         float totWidth = 0;
    104.         foreach (int width in columnWidths)
    105.         {
    106.             totWidth += (width + columnPadding);
    107.         }
    108.         return totWidth + SystemInformation.VerticalScrollBarWidth;
    109.     }
    110.  
    111.     protected override void OnMeasureItem(MeasureItemEventArgs e)
    112.     {
    113.         base.OnMeasureItem(e);
    114.  
    115.         if (DesignMode)
    116.             return;
    117.  
    118.         for (int colIndex = 0; colIndex < columnNames.Length; colIndex++)
    119.         {
    120.             string item = Convert.ToString(FilterItemOnProperty(Items[e.Index], columnNames[colIndex]));
    121.             SizeF sizeF = e.Graphics.MeasureString(item, Font);
    122.             columnWidths[colIndex] = Math.Max(columnWidths[colIndex], sizeF.Width);
    123.         }
    124.  
    125.         float totWidth = CalculateTotalWidth();
    126.  
    127.         e.ItemWidth = (int)totWidth;
    128.     }
    129.  
    130.     protected override void OnDrawItem(DrawItemEventArgs e)
    131.     {
    132.         base.OnDrawItem(e);
    133.  
    134.         if (DesignMode)
    135.             return;
    136.  
    137.         e.DrawBackground();
    138.  
    139.         Rectangle boundsRect = e.Bounds;
    140.         int lastRight = 0;
    141.  
    142.         using (Pen linePen = new Pen(SystemColors.GrayText))
    143.         {
    144.             using (SolidBrush brush = new SolidBrush(ForeColor))
    145.             {
    146.                 if (columnNames.Length == 0)
    147.                 {
    148.                     e.Graphics.DrawString(Convert.ToString(Items[e.Index]), Font, brush, boundsRect);
    149.                 }
    150.                 else
    151.                 {
    152.                     for (int colIndex = 0; colIndex < columnNames.Length; colIndex++)
    153.                     {
    154.                         string item = Convert.ToString(FilterItemOnProperty(Items[e.Index], columnNames[colIndex]));
    155.  
    156.                         boundsRect.X = lastRight;
    157.                         boundsRect.Width = (int)columnWidths[colIndex] + columnPadding;
    158.                         lastRight = boundsRect.Right;
    159.  
    160.                         if (colIndex == valueMemberColumnIndex)
    161.                         {
    162.                             using (Font boldFont = new Font(Font, FontStyle.Bold))
    163.                             {
    164.                                 e.Graphics.DrawString(item, boldFont, brush, boundsRect);
    165.                             }
    166.                         }
    167.                         else
    168.                         {
    169.                             e.Graphics.DrawString(item, Font, brush, boundsRect);
    170.                         }
    171.  
    172.                         if (colIndex < columnNames.Length - 1)
    173.                         {
    174.                             e.Graphics.DrawLine(linePen, boundsRect.Right, boundsRect.Top, boundsRect.Right, boundsRect.Bottom);
    175.                         }
    176.                     }
    177.                 }
    178.             }
    179.         }
    180.  
    181.         e.DrawFocusRectangle();
    182.     }
    183. }
    [Flash]http://mtv.apps.zing.vn/swf/mtv/Player.0.2.swf?url=http://mtv.apps.zing.vn/swf/mtv/Player.0.2.swf&autoplay=1&xmlurl=http://mtv.apps.zing.vn/swf/mtv/effect.xml&jsonurl=http://mtv.apps.zing.vn/sakura168vn/mtv/getjsondata/id/1565053&externallink=http://me.zing.vn/apps/mtv?params=/sakura168vn/mtv/mtv-detail/id/1565053[/Flash]
    Đã được chỉnh sửa lần cuối bởi _HungYen_No1_ : 23-11-2011 lúc 12:06 AM. Lý do: cho code vào thẻ

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

  1. Lấy displaymember trên combobox như thế nào.
    Gửi bởi vannhan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 07-09-2011, 10:30 PM
  2. Combobox trên C# | Khóa không cho nhập vào combobox trên C# như thế nào?
    Gửi bởi vanan3103 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 15-08-2011, 04:22 PM
  3. Thắc mắc về Combobox có nhiều column
    Gửi bởi honglaumong9 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 18-05-2010, 04:20 PM
  4. Tạo Combobox có nhiều màu trên C#
    Gửi bởi Xcross87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 15-04-2009, 03:03 PM
  5. Tạo Combobox trên Datagirdview | Làm thế nào add combobox vào datagrid với C#?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 10-04-2009, 05:12 PM

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