The MultiColumnComboBox currently selects the correct value in the popup when using the ENTER key. I want to achieve the same behavior with the TAB key but I haven't succeeded.
Also, if the user's text is not associated to any of the items, I want to empty the textbox so that he sees that's not a valid option.
using System.Collections.Generic;
using System.Windows.Forms;
using Telerik.WinControls;
using Telerik.WinControls.Data;
using Telerik.WinControls.UI;
namespace MultiColumnComboAutoSelectWithTab
{
public class RandomObject
{
public int Id { get; set; }
public string FirstStuff { get; set; }
public string SecondStuff { get; set; }
public RandomObject(int id, string first, string second)
{
this.Id = id;
this.FirstStuff = first;
this.SecondStuff = second;
}
}
public class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeCustomComponent();
var lst = new List<RandomObject>();
lst.Add(new RandomObject(1, "Albert", "Stuff"));
lst.Add(new RandomObject(2, "Alphonse", "Stuff"));
this.radMultiColumnComboBox1.DataSource = lst;
}
private void InitializeCustomComponent()
{
this.radMultiColumnComboBox1.DisplayMember = "FirstStuff";
this.radMultiColumnComboBox1.ValueMember = "Id";
this.radMultiColumnComboBox1.EditorControl.Columns.Add(new GridViewTextBoxColumn("Id", "Id"));
this.radMultiColumnComboBox1.EditorControl.Columns["Id"].IsVisible = false;
this.radMultiColumnComboBox1.EditorControl.Columns.Add(new GridViewTextBoxColumn("FirstStuff", "FirstStuff"));
this.radMultiColumnComboBox1.EditorControl.Columns["FirstStuff"].HeaderText = "First stuff";
this.radMultiColumnComboBox1.EditorControl.Columns.Add(new GridViewTextBoxColumn("SecondStuff", "SecondStuff"));
this.radMultiColumnComboBox1.EditorControl.Columns["SecondStuff"].HeaderText = "SecondStuff";
this.radMultiColumnComboBox1.AutoFilter = true;
this.radMultiColumnComboBox1.DropDownStyle = RadDropDownStyle.DropDown;
this.radMultiColumnComboBox1.AutoSize = true;
this.radMultiColumnComboBox1.AutoSizeDropDownToBestFit = true;
var filter = new FilterDescriptor(this.radMultiColumnComboBox1.DisplayMember, FilterOperator.StartsWith, string.Empty);
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.FilterDescriptors.Add(filter);
}
/// <summary>
/// Variable nécessaire au concepteur.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Nettoyage des ressources utilisées.
/// </summary>
/// <param name="disposing">true si les ressources managées doivent être supprimées ; sinon, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region AutoGeneratedStuff
private void InitializeComponent()
{
this.radMultiColumnComboBox1 = new Telerik.WinControls.UI.RadMultiColumnComboBox();
this.radTextBox1 = new Telerik.WinControls.UI.RadTextBox();
((System.ComponentModel.ISupportInitialize)(this.radMultiColumnComboBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).BeginInit();
this.SuspendLayout();
//
// radMultiColumnComboBox1
//
//
// radMultiColumnComboBox1.NestedRadGridView
//
this.radMultiColumnComboBox1.EditorControl.BackColor = System.Drawing.SystemColors.Window;
this.radMultiColumnComboBox1.EditorControl.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.radMultiColumnComboBox1.EditorControl.ForeColor = System.Drawing.SystemColors.ControlText;
this.radMultiColumnComboBox1.EditorControl.Location = new System.Drawing.Point(0, 0);
//
//
//
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.AllowAddNewRow = false;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.AllowCellContextMenu = false;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.AllowColumnChooser = false;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.EnableGrouping = false;
this.radMultiColumnComboBox1.EditorControl.MasterTemplate.ShowFilteringRow = false;
this.radMultiColumnComboBox1.EditorControl.Name = "NestedRadGridView";
this.radMultiColumnComboBox1.EditorControl.ReadOnly = true;
this.radMultiColumnComboBox1.EditorControl.ShowGroupPanel = false;
this.radMultiColumnComboBox1.EditorControl.Size = new System.Drawing.Size(240, 150);
this.radMultiColumnComboBox1.EditorControl.TabIndex = 0;
this.radMultiColumnComboBox1.Location = new System.Drawing.Point(81, 78);
this.radMultiColumnComboBox1.Name = "radMultiColumnComboBox1";
//
//
//
this.radMultiColumnComboBox1.RootElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.WrapAroundChildren;
this.radMultiColumnComboBox1.Size = new System.Drawing.Size(369, 20);
this.radMultiColumnComboBox1.TabIndex = 0;
this.radMultiColumnComboBox1.TabStop = false;
this.radMultiColumnComboBox1.Text = "radMultiColumnComboBox1";
//
// radTextBox1
//
this.radTextBox1.Location = new System.Drawing.Point(81, 131);
this.radTextBox1.Name = "radTextBox1";
this.radTextBox1.Size = new System.Drawing.Size(330, 20);
this.radTextBox1.TabIndex = 1;
this.radTextBox1.TabStop = false;
this.radTextBox1.Text = "radTextBox1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(498, 266);
this.Controls.Add(this.radTextBox1);
this.Controls.Add(this.radMultiColumnComboBox1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.radMultiColumnComboBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private Telerik.WinControls.UI.RadMultiColumnComboBox radMultiColumnComboBox1;
private Telerik.WinControls.UI.RadTextBox radTextBox1;
}
}