AUTHOR: Desislava Yordanova
DATE POSTED: April 07, 2016
Telerik UI for WinForms suite does not offer RadSearchBox out of the box. However, it can be easily achieved by using a RadTextBox with a RadButtonElement inside it.
We will create a derivative of RadTextBox and after the text box element is initialized, we should add a RadButtonElement with the appropriate image in the hosted text box container. When the button element is clicked, the custom defined Search event will be triggered. This is the appropriate place to perform the custom search logic that you need. You can find below a complete code snippet:
[C#]
public
Form1()
{
InitializeComponent();
SearchTextBox searchBox =
new
SearchTextBox();
searchBox.Size =
System.Drawing.Size(200, 20);
searchBox.Location =
Point(10, 200);
searchBox.Search += searchBox_Search;
this
.Controls.Add(searchBox);
}
private
void
searchBox_Search(
object
sender, SearchTextBox.SearchBoxEventArgs e)
RadMessageBox.Show(
"Search >> "
+ e.SearchText);
class
SearchTextBox : RadTextBox
override
string
ThemeClassName
get
return
typeof
(RadTextBox).FullName;
protected
OnLoad(Size desiredSize)
base
.OnLoad(desiredSize);
searchButton.ButtonFillElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed;
searchButton.ShowBorder =
false
;
RadButtonElement searchButton =
RadButtonElement();
InitializeTextElement()
.InitializeTextElement();
.TextBoxElement.TextBoxItem.NullText =
"Enter search criteria"
searchButton.Click +=
EventHandler(button_Click);
searchButton.Margin =
Padding(0, 0, 0, 0);
searchButton.Text =
.Empty;
searchButton.Image = Properties.Resources.SearchIcon;
StackLayoutElement stackPanel =
StackLayoutElement();
stackPanel.Orientation = Orientation.Horizontal;
stackPanel.Margin =
Padding(1, 0, 1, 0);
stackPanel.Children.Add(searchButton);
RadTextBoxItem tbItem =
.TextBoxElement.TextBoxItem;
.TextBoxElement.Children.Remove(tbItem);
DockLayoutPanel dockPanel =
DockLayoutPanel();
dockPanel.Children.Add(stackPanel);
dockPanel.Children.Add(tbItem);
DockLayoutPanel.SetDock(tbItem, Telerik.WinControls.Layouts.Dock.Left);
DockLayoutPanel.SetDock(stackPanel, Telerik.WinControls.Layouts.Dock.Right);
.TextBoxElement.Children.Add(dockPanel);
SearchBoxEventArgs : EventArgs
searchText;
SearchText
set
searchText = value;
event
EventHandler<SearchBoxEventArgs> Search;
button_Click(
sender, EventArgs e)
SearchBoxEventArgs newEvent =
SearchBoxEventArgs();
newEvent.SearchText =
.Text;
SearchEventRaiser(newEvent);
SearchEventRaiser(SearchBoxEventArgs e)
if
(Search !=
null
)
Search(
, e);
[VB.NET]
Public
Sub
New
()
InitializeComponent()
Dim
searchBox
As
SearchTextBox()
System.Drawing.Size(200, 20)
Point(10, 200)
AddHandler
searchBox.Search,
AddressOf
searchBox_Search
Me
.Controls.Add(searchBox)
End
Private
searchBox_Search(sender
Object
, e
SearchTextBox.SearchBoxEventArgs)
& e.SearchText)
Class
SearchTextBox
Inherits
RadTextBox
Overrides
Property
String
Get
Return
GetType
(RadTextBox).FullName
Set
(value
MyBase
.ThemeClassName = value
Protected
OnLoad(desiredSize
Size)
.OnLoad(desiredSize)
searchButton.ButtonFillElement.Visibility = Telerik.WinControls.ElementVisibility.Collapsed
False
searchButton
RadButtonElement
.InitializeTextElement()
searchButton =
RadButtonElement()
searchButton.Click,
button_Click
Padding(0, 0, 0, 0)
.Empty
searchButton.Image = My.Resources.SearchIcon
stackPanel
StackLayoutElement()
stackPanel.Orientation = Orientation.Horizontal
Padding(1, 0, 1, 0)
stackPanel.Children.Add(searchButton)
tbItem
RadTextBoxItem =
.TextBoxElement.TextBoxItem
.TextBoxElement.Children.Remove(tbItem)
dockPanel
DockLayoutPanel()
dockPanel.Children.Add(stackPanel)
dockPanel.Children.Add(tbItem)
DockLayoutPanel.SetDock(tbItem, Telerik.WinControls.Layouts.Dock.Left)
DockLayoutPanel.SetDock(stackPanel, Telerik.WinControls.Layouts.Dock.Right)
.TextBoxElement.Children.Add(dockPanel)
SearchBoxEventArgs
EventArgs
m_searchText
SearchText()
m_searchText = value
Event
Search
EventHandler(Of SearchBoxEventArgs)
button_Click(sender
EventArgs)
newEvent
SearchBoxEventArgs()
.Text
SearchEventRaiser(newEvent)
SearchEventRaiser(e
SearchBoxEventArgs)
RaiseEvent
, e)
Resources Buy Try