To reproduce: - The attached video shows how you can reproduce the issue Note - you should type fast in the drop down and the size is invalid only the firs time. Workaround: RadMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownAnimationEnabled = False
To reproduce: - Start the attached project and type a value so one item remains in the drop down. - Press Enter - event is not fired. Workaround: Use the DropDownClosed event and check if the value is changed.
To reproduce:
- Open the attached project.
- Type a text so there are no results in the drop down.
- Press Enter.
- Click the arrow button.
Workaround:
private void RadMultiColumnComboBox1_DropDownOpened1(object sender, EventArgs e)
{
if (radMultiColumnComboBox1.Text == "")
{
radMultiColumnComboBox1.EditorControl.FilterDescriptors.Clear();
CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor();
compositeFilter.FilterDescriptors.Add(new FilterDescriptor("Drug", FilterOperator.StartsWith, ""));
compositeFilter.FilterDescriptors.Add(new FilterDescriptor("Name", FilterOperator.StartsWith, ""));
compositeFilter.LogicalOperator = FilterLogicalOperator.Or;
radMultiColumnComboBox1.EditorControl.FilterDescriptors.Add(compositeFilter);
}
}
To reproduce:
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
for (int i = 0; i < 20; i++)
{
dt.Rows.Add(i, "Item" + i);
}
this.radMultiColumnComboBox1.DataSource = dt;
this.radMultiColumnComboBox1.DisplayMember = "Name";
this.radMultiColumnComboBox1.ValueMember = "Id";
this.radMultiColumnComboBox1.SelectedValueChanged += radMultiColumnComboBox1_SelectedValueChanged;
}
private void radMultiColumnComboBox1_SelectedValueChanged(object sender, EventArgs e)
{
if (this.radMultiColumnComboBox1.SelectedIndex > -1)
{
MessageBox.Show("Test");
}
}
NOTE: If you use a RadMessageBox, after showing the message the first time, the popup can't be closed because InvalidOperationException is thrown.
Workaround: show the message box in the RadMultiColumnComboBox.DropDownClosed event.
To reproduce:
DataTable dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
dt.Columns.Add("Name", typeof(string));
for (int i = 0; i < 1; i++)
{
dt.Rows.Add(i, "Item" + i);
}
this.radMultiColumnComboBox1.DataSource = dt;
this.radMultiColumnComboBox1.DisplayMember = "Name";
this.radMultiColumnComboBox1.ValueMember = "Id";
this.radMultiColumnComboBox1.AutoFilter = true;
this.radMultiColumnComboBox1.SelectedIndex = -1;
NOTE: If you add more than 1 items, the text won't be changed.
Workaround:
Public Class CustomRadMultiColumnComboBox
Inherits RadMultiColumnComboBox
Protected Overrides Function CreateMultiColumnComboBoxElement() As RadMultiColumnComboBoxElement
Return New CustomRadMultiColumnComboBoxElement()
End Function
Public Overrides Property ThemeClassName As String
Get
Return GetType(RadMultiColumnComboBox).FullName
End Get
Set(value As String)
MyBase.ThemeClassName = value
End Set
End Property
End Class
Public Class CustomRadMultiColumnComboBoxElement
Inherits RadMultiColumnComboBoxElement
Protected Overrides Sub CheckForCompleteMatchAndUpdateText()
End Sub
Protected Overrides ReadOnly Property ThemeEffectiveType() As Type
Get
Return GetType(RadMultiColumnComboBoxElement)
End Get
End Property
End Class
To reproduce: radMultiColumnComboBox.AutoFilter = True Dim filter As New Telerik.WinControls.Data.FilterDescriptor() filter.PropertyName = radMultiColumnComboBox.DisplayMember filter.Operator = Telerik.WinControls.Data.FilterOperator.StartsWith radMultiColumnComboBox.EditorControl.MasterTemplate.FilterDescriptors.Add(filter) radMultiColumnComboBox.MultiColumnComboBoxElement.AutoCompleteMode = AutoCompleteMode.SuggestAppend radMultiColumnComboBox.MultiColumnComboBoxElement.LimitToList = True - Select an item, copy the text and then try to paste it.
When you enable the popup sizing functionality, the last user defined size by the sizing grip should be kept.
Workaround: create a custom RadMultiColumnComboBox control with a custom element. You can also check the attached project.
public class MyRadMultiColumnComboBox : RadMultiColumnComboBox
{
public override string ThemeClassName
{
get
{
return typeof(RadMultiColumnComboBox).FullName;
}
}
protected override RadMultiColumnComboBoxElement CreateMultiColumnComboBoxElement()
{
return new MyRadMultiColumnComboBoxElement();
}
}
public class MyRadMultiColumnComboBoxElement : RadMultiColumnComboBoxElement
{
protected override Type ThemeEffectiveType
{
get
{
return typeof(RadMultiColumnComboBoxElement);
}
}
protected override void ProcessKeyDown(object sender, KeyEventArgs e)
{
base.ProcessKeyDown(sender, e);
if (this.IsPopupOpen && (e.KeyCode == Keys.PageDown || e.KeyCode == Keys.PageUp))
{
this.EditorControl.GridBehavior.ProcessKey(e);
}
}
}
How to reproduce: check the attached project and video
Workaround: create a custom RadMultiColumnComboBoxElement
Public Class MyRadMultiColumnComboBox
Inherits RadMultiColumnComboBox
Public Overrides Property ThemeClassName As String
Get
Return GetType(RadMultiColumnComboBox).FullName
End Get
Set(value As String)
MyBase.ThemeClassName = value
End Set
End Property
Protected Overrides Function CreateMultiColumnComboBoxElement() As RadMultiColumnComboBoxElement
Return New MyRadMultiColumnComboBoxEleemnt()
End Function
End Class
Class MyRadMultiColumnComboBoxEleemnt
Inherits RadMultiColumnComboBoxElement
Protected Overrides ReadOnly Property ThemeEffectiveType() As Type
Get
Return GetType(RadMultiColumnComboBoxElement)
End Get
End Property
Protected Overrides Sub SetActiveItem(item As String)
Dim rowIndex As Integer = Me.FindItemIndexExact(Text)
If rowIndex <> -1 Then
Me.textBox.SelectionStart = Me.textBox.Text.Length
End If
End Sub
End Class
Use attached project to reproduce. Workarond: radMultiColumnComboBox1.AutoSize = false; radMultiColumnComboBox1.MinimumSize = new Size(0, 22);
To reproduce:
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Description");
dt.Rows.Add(new object[] { "0", "Low" });
dt.Rows.Add(new object[] { "1", "Medium" });
dt.Rows.Add(new object[] { "2", "High" });
radMultiColumnComboBox1.DisplayMember = "ID";
radMultiColumnComboBox1.ValueMember = "ID";
radMultiColumnComboBox1.DataSource = dt;
radMultiColumnComboBox1.SelectedValue = "1";
this.radMultiColumnComboBox1.SelectedValueChanged+=radMultiColumnComboBox1_SelectedValueChanged;
private void radMultiColumnComboBox1_SelectedValueChanged(object sender, EventArgs e)
{
Console.WriteLine(this.radMultiColumnComboBox1.SelectedValue);
}
If you type 2 in the editable part, the SelectedValue is not changed as in the previous version.
Workaround:
public class MyRadMultiColumnComboBox : RadMultiColumnComboBox
{
public override string ThemeClassName
{
get
{
return typeof(RadMultiColumnComboBox).FullName;
}
}
protected override RadMultiColumnComboBoxElement CreateMultiColumnComboBoxElement()
{
return new MyRadMultiColumnComboBoxElement();
}
}
public class MyRadMultiColumnComboBoxElement : RadMultiColumnComboBoxElement
{
protected override Type ThemeEffectiveType
{
get
{
return typeof(RadMultiColumnComboBoxElement);
}
}
protected override void SetActiveItem(string text)
{
int rowIndex = this.FindItemIndexExact(text);
if (rowIndex != -1)
{
this.EditorControl.CurrentRow = this.EditorControl.Rows[rowIndex];
this.textBox.SelectionStart = this.textBox.Text.Length;
}
}
}
To reproduce: please refer to the attached sample project which result is illustrated in the attached gif file. The DropDownClosed is expected to be fired when the drop down is already closed. Hence, showing a message box shouldn't keep the drop down opened. The problem is reproducible with RadDropDownList as well. Note that this problem is not applicable for MS ComboBox. Workaround: this.radMultiColumnComboBox1.MultiColumnComboBoxElement.DropDownAnimationEnabled = false;
To reproduce:
Type "Th" into the multi-column combo box in the attached project. Then press and hold the Backspace key until "Th" is deleted. Then release Backspace key. There remain only the filtered options in the dropdown.
If I press and release the backspace key 1x for each typed letter, then the dropdown repopulates as expected.
Workaround:
private void radMultiColumnComboBox1_TextChanged(object sender, EventArgs e)
{
this.radMultiColumnComboBox1.MultiColumnComboBoxElement.ApplyFilter();
}
To reproduce:
this.radMultiColumnComboBox1.DataSource = this.customersBindingSource;
this.radMultiColumnComboBox1.DisplayMember = "CustomerID";
this.radMultiColumnComboBox1.AutoFilter = true;
FilterDescriptor filter = new FilterDescriptor();
filter.PropertyName = this.radMultiColumnComboBox1.DisplayMember;
filter.Operator = FilterOperator.Contains;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.FilterDescriptors.Add(filter);
1. Click the dropdown button, verify that all items list on drop down
2. Type into the textbox so only one item is left( e.g. "BERGS" )
3. While the drop-down is still opened, click the arrow button.
4. Focus another control on the form and then when the user clicks the arrow button, only one item is still shown in the drop down.
Workaround:
private void radMultiColumnComboBox1_DropDownClosed(object sender, RadPopupClosedEventArgs args)
{
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.Refresh();
}
At the moment when the control receives the focus the text gets selected. if the AllowShowFocusCues property is set to true and the DropDownStyle is set to DropDownList the focus cues should be painted similarly as in RadDropDownList this.radMultiColumnComboBox1.AllowShowFocusCues = true; this.radMultiColumnComboBox1.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;
To reproduce: run the attached project and refer to the attached gif file.
Workaround:
this.radMultiColumnComboBox1.MultiColumnComboBoxElement.TextBoxElement.TextBoxItem.TextBoxControl.MouseDown += TextBoxControl_MouseDown;
private void TextBoxControl_MouseDown(object sender, MouseEventArgs e)
{
this.radMultiColumnComboBox1.MultiColumnComboBoxElement.TextBoxElement.TextBoxItem.TextBoxControl.SelectAll();
}
Use attached to reproduce.
Hello,
I'm facing a problem with the MulticolumnCombobox that results in an SelectedValueChanged-Event when the list is dropped down the first time after data source was set. Please use the attached project for reproducing the problem using the following steps:
==> As the MulticolumnCombobox performs different based on the culture, this seems to be a bug.
If you need further information, please do not hestitate to ask.
Populate RadMultiColumnComboBox with data and enable the auto filter functionality. Apply a CompositeFilterDescriptor with two text columns. Try to filter entering several letters and press Tab. You will notice that the SelectedIndexChanged event is not fired in this case. However, if only one FilterDescriptor is added, not a CompositeFilterDescriptor, the selection will be properly updated.
Please refer to the attached sample project and gif file which illustrates the behavior.