﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » .NET Forums » General .NET Discussion  » How to stop TextBox_Leave event code from running</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Fri, 22 May 2026 11:33:07 GMT</lastBuildDate><ttl>20</ttl><item><title>How to stop TextBox_Leave event code from running</title><link>http://forum.strataframe.net/FindPost29870.aspx</link><description>I have a form with a SearchTextBox on it, the only purpose of the SearchtextBox is to enter some text, then do a search, and populate other textBoxes on the form when you return from the search----- All working fine. The Search Results in a Grid being displayed, and a record can be selected.&lt;br/&gt;&lt;br/&gt;I have the code to do the search on the SearchTextBox_Leave event. &lt;br/&gt;&lt;br/&gt;My only probelm is that, if I have focus on the SearchTextBox, and I click on the X of the form to close the form, the Form Closes , but leaves a dangling search Grid on the screen, even though the Form itself is gone at this stage.&lt;br/&gt;&lt;br/&gt;It probably does not matter , but the Grid happens to be a Devexpress grid which I use to do the searching. Is there a way to prevent the Code in the _Leave event from running, as I dont want it to run if the form has been released</description><pubDate>Wed, 13 Apr 2011 14:41:49 GMT</pubDate><dc:creator>Ger Cannoll</dc:creator></item><item><title>RE: How to stop TextBox_Leave event code from running</title><link>http://forum.strataframe.net/FindPost29874.aspx</link><description>The best thing to do is to override the ProcessCmdKey method in the sub-class. You can then run your search only when the user hits the Enter key (and maybe the tab key) within the textbox.&amp;nbsp; Here's some sample code:&lt;br/&gt;&lt;br/&gt;&lt;span&gt;[code]public class SearchTextBox&lt;br/&gt;&amp;nbsp; : TextBox&lt;br/&gt;{&lt;br/&gt;&lt;br/&gt;&amp;nbsp; public SearchTextBox() : base() { }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br/&gt;&amp;nbsp; /// Run search if enter is pressed while in the textbox.&lt;br/&gt;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br/&gt;&amp;nbsp; protected override bool ProcessCmdKey( ref Message msg, Keys keyData )&lt;br/&gt;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- You could also define other keys, such as the tab key here.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (keyData == Keys.Enter)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- Run the search&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.SearchFunction != null)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = this.SearchFunction( this.Text );&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show( string.Format( "{0} items found" );&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- Notify develper that they haven't setup a search function.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show( string.Format( "No search function defined. Search term is '{0}'", this.Text ) );&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- Whatever key is used to run the search &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; should also just do whatever it normally does.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return base.ProcessCmdKey( ref msg, keyData );&lt;br/&gt;&amp;nbsp; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br/&gt;&amp;nbsp; /// Define the function that runs the search. This&lt;br/&gt;&amp;nbsp; /// function accepts a string search term and return&lt;br/&gt;&amp;nbsp; /// number of items found. You could also use a &lt;br/&gt;&amp;nbsp; /// normal delegate, so you don't have to have a return&lt;br/&gt;&amp;nbsp; /// value.&amp;nbsp; &lt;br/&gt;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br/&gt;&amp;nbsp; public Func&amp;lt;string, int&amp;gt; SearchFunction { get; set; }&lt;br/&gt;&lt;br/&gt;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br/&gt;&amp;nbsp; /// Override to always return a string (and never null).&lt;br/&gt;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br/&gt;&amp;nbsp; public override string Text&lt;br/&gt;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; get&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string text = string.Empty;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!string.IsNullOrEmpty( base.Text ))&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text = base.Text;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return text;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.Text = value;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br/&gt;&amp;nbsp; }&lt;br/&gt;}[/code]&lt;/span&gt;</description><pubDate>Wed, 13 Apr 2011 14:41:49 GMT</pubDate><dc:creator>Greg McGuffey</dc:creator></item></channel></rss>