I was able to extend the radcombobox so that the selectedindexchanging event fires that allows the developer to cancel the selectedindexchanged event.
This will be useful for developers using Telerik RadControls for Winforms version prior to 2010 Q2.
The attached project contains an extended custom control that inherits RadComboBox but adds new functionality of selectedindexchanging event.
The complete code for such a custom control is given below.
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
using
Telerik.WinControls.UI;
using
Telerik.WinControls;
namespace
MyControls
{
public
partial
class
RadComboBoxPlus : RadComboBox
{
public
event
CancelEventHandler SelectedIndexChanging;
[Browsable(
false
)]
public
int
PreviousSelectedIndex {
get
;
private
set
; }
public
RadComboBoxPlus()
{
InitializeComponent();
PreviousSelectedIndex = -1;
}
public
override
string
ThemeClassName
{
get
{
return
typeof
(RadComboBox).FullName;
}
}
protected
void
OnSelectedIndexChanging(CancelEventArgs e)
{
var selectedIndexChanging = SelectedIndexChanging;
if
(selectedIndexChanging !=
null
)
selectedIndexChanging(
this
, e);
}
protected
override
void
OnSelectedIndexChanged(EventArgs e)
{
if
(PreviousSelectedIndex != SelectedIndex)
{
var cancelEventArgs =
new
CancelEventArgs();
OnSelectedIndexChanging(cancelEventArgs);
if
(!cancelEventArgs.Cancel)
{
PreviousSelectedIndex = SelectedIndex;
base
.OnSelectedIndexChanged(e);
}
else
SelectedIndex = PreviousSelectedIndex;
}
}
protected
override
void
OnPaint(PaintEventArgs pe)
{
base
.OnPaint(pe);
}
}
}