Question

Creating an Event for Objects...

Asked by: ProWebNetworks

Hi Guys,

I have a textbox control on my screen. I want to call a method when the content of that textbox has changed. I know I can doubleclick on the event "TextChanged" on the textbox then it takes me into code, however I would rather simply paste my method into the events box.

Right now if I click on the dropdown arrow next to the "TextChanged" property it only allows me to choose methods that the app produced for me such as form1_load() etc.

The reason I want to do this, is because I have like 30 text fields on the screen and I need to set them all to change a bool variable that data has changed so that when the user leaves or attempts to leave the screen it will warn them to save first.

Any suggestions?

Thanks!

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-11-04 at 07:37:35ID24871176
Topics

C# Programming Language

,

Microsoft Visual C#.Net

Participating Experts
5
Points
500
Comments
14

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. TextBox TextChanged Event not firing
    Hi there, I have an interesting problem. I have a textbox that asks for the number of users. When someone finishes entering the number of users, I want to fire the TextChanged event to calculate a total. The TextChanged event does fire when someone enters in a value and pres...
  2. Call the TextChange event for a textbox inside a datagrid.
    Hi, I have a ASP.net 1.1 Webform that contains a datagrid , that contains 4 columns Product--Qty--Price--Total Each column has a textbox. The user will enter a value in the Product and the Qty and Price textbox. I want to call the TextChange event of the Qty and Price and te...
  3. Textbox_TextChanged always return ''
    Hi, I use windows form. Why at txtNilaiBarang_TextChanged always return '' ? txt.text always return '' Thank you.
  4. Simulate doubleclick on a textbox
    I have a VB.NET form. After the form loads, I want to set focus on a certain textbox and then call the doubleclick event for that textbox. I can easily do setfocus, but I can't figure out how to prgrammatically call the doubleclick event for this textbox. The reason is tha...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: ProWebNetworksPosted on 2009-11-04 at 07:44:50ID: 25740449

This is a windows app by the way...sorry.

 

by: ProWebNetworksPosted on 2009-11-04 at 07:46:36ID: 25740472

Do I just create snippet that looks like this?

        private void Update_DataChanged(object sender, EventArgs e)
        {

        }

 

by: p_davisPosted on 2009-11-04 at 07:46:58ID: 25740480

you can type in your own method name in the name field of the event

 

by: p_davisPosted on 2009-11-04 at 07:47:36ID: 25740486

or you can just put a call to your method with in their stubbed in event.

 

by: ProWebNetworksPosted on 2009-11-04 at 07:50:35ID: 25740525

So in the method I create - it appears I can't just create a:

private void Update_DataChanged()
{
     DataChanged = true;
}

I actually need to make it -

        private void Update_DataChanged(object sender, EventArgs e)
        {
             DataChanged = true;
        }


What does having the object sender, EventArgs e do that makes it available as a selection in the event list?

 

by: p_davisPosted on 2009-11-04 at 07:51:48ID: 25740539

its the default delegate signature for parameters.

 

by: InternalStaticPosted on 2009-11-04 at 07:52:05ID: 25740547

Instead of "double clicking" on the TextBox objects, I suggest doing this manually, as it is one of those times that manual is better. I never use the GUI design in VS (except when time is absolutely pressing), and I don't suggest you use it, either. However, just create one method, name it something meaningful, and place in its body whatever you want to happen when a TextBox control's text is changed. Make it return void, and take an Object and EventArgs as a parameter. Just make one method for this. You do NOT need 30. I've seen people implement the exactly same method multiple times too much for my own good.

The method should look like the one in the following code snippet, obviously with your code in the body and the name of your choice.

When you've done this, you can use the designer and just copy the name of your method, go to each TextBox on your form, and paste the method's name in the TextChanged event property. Done and done. I wouldn't do it this way, but hey, whatever works for you. Make sure to put this method in the class definition of the Form the TextBox controls reside on, though.

Hope it helps,

Nate

void RenameThisMethodProWebNetworks(Object sender, EventArgs evArgs)
{
     // Whatever you want to happen when text is changed (change your bool value,
     // or whatever else)
     // If you need access to the original TextBox that "sent" the event, it is
     // actually just "sender", so cast it back to a TextBox like so:
     // TextBox txt = sender as TextBox;
     // Variable "txt" now refers to the TextBox that "sent" the event.
}

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:

Select allOpen in new window

 

by: p_davisPosted on 2009-11-04 at 07:52:42ID: 25740553

if you don't want to change that -- just call your method from the stubbed in event.

 

by: IHateStupidPeoplePosted on 2009-11-04 at 07:56:37ID: 25740599

If it's always the same method... have them all relate to the same delegate handler method, then have that method tell yours to execute.  Not just accomplished by the designer, you will have to go into your designer code and modify it yourself, or add the events outside of the designer in the other code window for VS Windows Forms layouts.  Simply put, like the following. (is not full code but the gist of the idea)

 

by: InternalStaticPosted on 2009-11-04 at 07:58:55ID: 25740627

>> What does having the object sender, EventArgs e do that makes it available as a selection in the event list?

Sorry, when I posted I didn't see any responses yet.

The signature you're referring to is the default signature for event-handling methods (not all methods, of course...). The "sender" object is (according to .NET standards) the object that fired the event. It provides a way to detect what fired the event without having separate methods for each and every object that may trigger the same code.

The second parameter, EventArgs, is an object that derives from the "EventArgs" class (or an instance of the EventArgs class itself). Meaningful data may or may not be passed, completely dependent on the event that was triggered. For example, a MouseClick event takes a MouseEventArgs parameter instead of EventArgs. The MouseEventArgs, which derives from EventArgs, holds data correpsonding to where the mouse was when it was clicked, which button(s) were clicked, etc. For methods that don't need this kind of data about their event, EventArgs.Empty is usually passed (again, according to .NET standard), instead of just null.

 

by: IHateStupidPeoplePosted on 2009-11-04 at 08:02:49ID: 25740667

TextBox tbx1 = new TextBox();
TextBox tbx2 = new TextBox();

Constructor()
{
      tbx1.TextChanged += MyEvent;
      tbx2.TextChanged += MyEvent;
}

void MyEvent(Object sender, EventArgs e)
{
      YourMethodHere();
}

 

by: TribmosPosted on 2009-11-04 at 08:13:17ID: 25740799

Sounds like your coming from the old VB style where the function name directly tied to the event handler.  In C# you "subscribe" your event handler function to the events of the particular control.  A control can therefore send the event to 0 or more handlers.  As long as the parameters of the handler function match what the control event can send out your set!  name is arbitrary.

An example of something I just did : i have a label that when compiled under debugging acts like a button (toggles some behind the scenes attributes for testing)   As you see a single or double click both activate the same event handler function.

this.label1.DoubleClick += new System.EventHandler(this.label1_Click);
this.label1.Click += new System.EventHandler(this.label1_Click);

                                              
1:
2:

Select allOpen in new window

 

by: Idle_MindPosted on 2009-11-04 at 08:29:50ID: 25740998

Double click on the FIRST TextBox so you get the stub and add the code in there:

        private bool DataChanged = false;

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            DataChanged = true;
        }

Now go back to the Form design view and select all the rest of the TextBoxes.  Click on the Lightning bolt to get the events.  Find the TextChanged() event, click on the dropdown, and select "textBox1_TextChanged".

Now all of the TextBoxes will cause that same method to fire and thus toggle DataChanged to true.

 

by: ProWebNetworksPosted on 2009-11-04 at 08:49:44ID: 31650072

This was the complete answer I was looking for thank you.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...