【问题标题】:change with of dropdown window in a telerik RadGridView comboboxcolumn在 Telerik RadGridView 组合框列中更改下拉窗口
【发布时间】:2015-10-01 19:15:44
【问题描述】:

我正在尝试使用 C# 和 WinForms 在Telerik RadGridView GridViewComboBoxColumn 中设置下拉窗口的宽度。但是我只找到了设置整列宽度的方法:

foreach (GridViewColumn col in radGridView1.Columns)
{
    GridViewComboBoxColumn cbCol = col as GridViewComboBoxColumn;
    cbCol.Width = 200;
}

但这不是我想要的。我希望下拉窗口比列本身更宽。我还发现了一个DropDownStyle 属性:

cbCol.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown;
// or this
cbCol.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;

但这并没有什么区别(至少在视觉上对我来说没有),我找不到像 DropDownWidth 这样的属性或类似的东西。

【问题讨论】:

    标签: c# winforms telerik radgridview


    【解决方案1】:

    你在这里:

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
    
            radGridView1.CellEditorInitialized += RadGridView1_CellEditorInitialized;
        }
    
        private void RadGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
        {
            RadDropDownListEditor editor = e.ActiveEditor as RadDropDownListEditor;
            if (editor != null)
            {
                RadDropDownListEditorElement ddlElement =(RadDropDownListEditorElement ) editor.EditorElement;
                ddlElement.DropDownMinSize = new Size(200, 300);
            }
        }
    

    【讨论】:

      【解决方案2】:

      两个想法:

      1. 将 DropDownSizingMode 添加到您的 RadDropDownListEditor。这至少允许用户手动调整下拉菜单的大小。
      2. 或者更好的是,使用 GridViewMultiComboBoxColumn 而不是 GridViewComboBoxColumn。这允许您以编程方式调整下拉菜单的大小。

      这里有一些代码可以尝试:

      public partial class Form1 : Form
      {
          DataTable dtSrc;
      
          public Form1()
          {
              InitializeComponent();
          }
      
          private void Form1_Load(object sender, EventArgs e)
          {
              dtSrc = new DataTable();
              DataColumn dc = dtSrc.Columns.Add("Text");
              dtSrc.Rows.Add("ComboBox Text");
              dtSrc.Rows.Add("Long ComboBox Text");
              dtSrc.Rows.Add("Longer ComboBox Text");
              dtSrc.Rows.Add("Really Longer ComboBox Text");
              dtSrc.Rows.Add("Exceptionally Longer ComboBox Text");
              dtSrc.Rows.Add("A ghastly amount of textual information that is to be used for the dropdown as ComboBox Text");
      
              // ComboBox in Grid
              GridViewComboBoxColumn cbCol = new GridViewComboBoxColumn();
              cbCol.Name = "cbCol";
              cbCol.HeaderText = "CB";
              cbCol.DataSource = dtSrc;
              cbCol.DisplayMember = "Text";
              cbCol.Width = 150;
              this.radGridView1.Columns.Add(cbCol);
      
              // MultiComboBox in Grid
              GridViewMultiComboBoxColumn mcbCol = new GridViewMultiComboBoxColumn();
              mcbCol.Name = "mcbCol";
              mcbCol.HeaderText = "MCB";
              mcbCol.DataSource = dtSrc;
              mcbCol.DisplayMember = "Text";
              mcbCol.Width = 150;
              this.radGridView1.Columns.Add(mcbCol);
      
              // TextBox in Grid
              GridViewTextBoxColumn txtCol = new GridViewTextBoxColumn();
              txtCol.Name = "txtCol";
              txtCol.HeaderText = "TXT";
              txtCol.Width = 400;
              this.radGridView1.Columns.Add(txtCol);
      
          }
      
          private void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e)
          {
              if (e.Column == radGridView1.Columns["cbCol"])
              {
                  RadDropDownListEditor cboEditor = this.radGridView1.ActiveEditor as RadDropDownListEditor;
                  cboEditor.EditorElement.StretchVertically = false;
                  cboEditor.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;
                  cboEditor.DropDownSizingMode = SizingMode.UpDownAndRightBottom;
              }
      
              if (e.Column == radGridView1.Columns["mcbCol"])
              {
                  RadMultiColumnComboBoxElement mcboEditor = (RadMultiColumnComboBoxElement)e.ActiveEditor;
                  mcboEditor.EditorControl.Columns["Text"].MinWidth = 300;
                  mcboEditor.EditorControl.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill;
                  mcboEditor.EditorControl.ShowRowHeaderColumn = false;
                  mcboEditor.DropDownMinSize = new Size(350, 150);
                  mcboEditor.DropDownSizingMode = SizingMode.UpDownAndRightBottom;
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2016-01-14
        • 1970-01-01
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        • 2016-11-14
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        相关资源
        最近更新 更多