Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / New Users / October 2007

Tip: Looking for answers? Try searching our database.

What is the best approach to determine if there is a change?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Andrew - 15 Oct 2007 22:54 GMT
Hello, friends,

We are developing c#.net Windows app using .net 2005. In a form, there are
about 80 editable controls, such as text boxes, combo boxes, masket boxes,
etc.

We need to detect if any of their values has been changed when a user
decides to close this window. If yes, we need to prompt a message and save
accordingly.

Of course, we can write 80 ValueChanged() event handler for each control to
monitor its value. But, do we have a better way to do this?

Thanks a lot.
Chris Mullins [MVP - C#] - 15 Oct 2007 23:03 GMT
> We are developing c#.net Windows app using .net 2005. In a form, there are
> about 80 editable controls, such as text boxes, combo boxes, masket boxes,
[quoted text clipped - 7 lines]
> to
> monitor its value. But, do we have a better way to do this?

In the page load event, I would rip through the controls, and add in a
changed handler. Your code will end up looking like:

foreach(control c in this.controls)
{
   if (typeof(c) is textBox)
       ((TextBox)c).TextChanged += TextChangedHandler(...);
   if (typeof(c) is listbox)
       ((ListBox)c).SelectedIndexChanged += LBChangedHandler(...);
}

Another option is to databind all your fields/controls, then let the dataset
tell you that things have changed.

--
Chris Mullins
Andrew - 15 Oct 2007 23:34 GMT
Thanks a lot, but databind is not an option since our data are
populated/saved through web services.

> > We are developing c#.net Windows app using .net 2005. In a form, there are
> > about 80 editable controls, such as text boxes, combo boxes, masket boxes,
[quoted text clipped - 24 lines]
> --
> Chris Mullins
Chris Mullins [MVP - C#] - 15 Oct 2007 23:51 GMT
You can't databind against a web service? That's news to me.

I guess I'll have to stop shipping those applications that do that.
Seriously though, I've seen it done with both ASP.Net and WinForms
applications. It may not be suitable for your app, but it's certainly
possible.

http://channel9.msdn.com/Showpost.aspx?postid=200444

--
Chris Mullins

> Thanks a lot, but databind is not an option since our data are
> populated/saved through web services.
[quoted text clipped - 32 lines]
>> --
>> Chris Mullins
James Crosswell - 16 Oct 2007 11:40 GMT
> Thanks a lot, but databind is not an option since our data are
> populated/saved through web services.

You can databind against pretty much anything... If you're fetching the
data from a web service then you must be storing it locally in some kind
of class and should be able to bind to the properties of that class.

None the less, the other solution proposed should work fine as well if
you don't like data binding.

Best Regards,

James Crosswell
Microforge.net LLC
http://www.microforge.net

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.