C# 更改telerik RadGridView comboboxcolumn中下拉窗口的
我正在尝试使用C#和WinForms设置Telerik RadGridView GridViewComboxColumnC# 更改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; } 但这不是我想要的。我希望下拉窗口比
中下拉窗口的宽度。但我只找到了设置整列宽度的方法:
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);
}
}