Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改telerik RadGridView comboboxcolumn中下拉窗口的_C#_Winforms_Telerik_Radgridview - Fatal编程技术网

C# 更改telerik RadGridView comboboxcolumn中下拉窗口的

C# 更改telerik RadGridView comboboxcolumn中下拉窗口的,c#,winforms,telerik,radgridview,C#,Winforms,Telerik,Radgridview,我正在尝试使用C#和WinForms设置Telerik RadGridView GridViewComboxColumn中下拉窗口的宽度。但我只找到了设置整列宽度的方法: foreach (GridViewColumn col in radGridView1.Columns) { GridViewComboBoxColumn cbCol = col as GridViewComboBoxColumn; cbCol.Width = 200; } 但这不是我想要的。我希望下拉窗口比

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

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
或类似的属性。

两个想法:

  • 将DropDownSizingMode添加到RadDropDownListEditor。这至少允许用户手动调整下拉列表的大小
  • 或者更好的方法是使用GridViewMultiComboxColumn而不是GridViewComboxColumn。这允许您以编程方式调整下拉列表的大小
  • 下面是一些要尝试的代码:

    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;
            }
        }
    }
    
    给你:

        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);
            }
        }