Click here to Skip to main content
14,983,791 members

Comments by DaveyM69 (Top 115 by date)

DaveyM69 28-Apr-16 8:20am View
Reason for my vote of 4 \n With a little work to clean things up for my situation your code worked fine - thanks.
DaveyM69 23-Jan-14 5:00am View
Reason for my vote of 5 \n Handy :)
DaveyM69 14-Jul-13 16:17pm View
You are creating a new Form1 every time the Button is clicked in Form2. The OP hasn't stated whether this is what he needs, but normally the initial instance is required.
Additionally, these instances are only ever hidden and never closed - that's going to start using a lot of unnecessary memory very quickly!
DaveyM69 28-Feb-13 16:36pm View
"If you don't use Dispose your code will be disposed at closing application time": or not. There can be occasions (especially but not exclusively when handling unmanaged resources with PInvoke etc) where it may not happen. Disposing of intensive or unmanaged resources in a timely manner is good coding practice - using 'using' makes this far more convenient and there is no excuse normally for not doing so.
DaveyM69 17-Feb-13 7:32am View
The OP wants it the other way round, change Label's text in form 1 from form 2.
There are two ways to do this - constructor injection or an event. An event it the preferred and cleanest (most OOP) way. Refer to OriginalGriff's answer.
DaveyM69 5-Dec-12 7:37am View
Rather than == "" it would be better to use String.IsNullOrEmpty(textBox.Text).
Also, exceptions should be more specific - ArgumentNullException would be a better choice here.
DaveyM69 23-Nov-12 13:13pm View
You generally only need to use fixed if the unmanaged function will mutate the data and you need it again afterwards - it prevents the GC moving the data in memory. GCHandle (when using GCHandleType.Pinned) is normally a better way for that though, or Marshal.AllocHGlobal - they both need to be freed if used so beware if you ever need them!
DaveyM69 4-Nov-12 16:00pm View
This is rarely a good solution, Griff's solution is the correct way to do this.
DaveyM69 1-Nov-12 11:29am View
The remarks section says:
No conversions are performed. Therefore, the data retrieved must already be a single-precision floating point number.
Call IsDBNull to check for null values before calling this method.
I would start with those...
DaveyM69 6-Aug-12 10:42am View
This will work only if the form loads before the timer ticks which is not guaranteed - a poor solution in my opinion.
There are several events raised by the form itself that may suffice (such as Shown) that would be more appropriate.
DaveyM69 12-Jul-12 18:14pm View
You're welcome :)
DaveyM69 12-Jul-12 16:59pm View
Is the pointer a pointer to unmanaged memory? If so, this will copy the data to a byte[] which can be serialized:
public class Data
private byte[] data;

public Data(IntPtr handle, int length)
data = new byte[length];
Marshal.Copy(handle, data, 0, length);
DaveyM69 21-Jun-12 6:35am View
If the List is a list of class instances then each element will just hold a reference (4 bytes 32bit, 8 bytes 64bit). The overall memory used by the app will increase by the the size of all instances combined, but the List object itself will approximately be IntPtr.Size * Count.
DaveyM69 1-Jun-12 14:53pm View
Good advice - I had never even thought of that :-)
DaveyM69 15-May-12 9:59am View
"If MIDI sound sounds not realistic enough to you (which I understand; it means you have some musical hearing"

Good quality professional instruments that use multiple high quality samples and MIDI generated by a musician that actually understands how the instrument (who's sound is trying to be replicated) works so can play accordingly can sound really incredibly good and discernible from an audio recording in many cases.
There is no concept of MIDI sound as it's just a digital description of a performance.
DaveyM69 15-Apr-12 8:08am View
Edited to remove br tags in pre blocks as they are being displayed as plain text
DaveyM69 7-Feb-12 17:39pm View
Don't post your email address to a public board such as this unless you love spam!
You will receive an email notification if anyone posts a solution or comment, which will then be here for all to benifit from and not just in your email inbox.
DaveyM69 7-Feb-12 17:26pm View
All properties have a default value, the value depends on the type. In general, for value types it is 0 or the type's equivalent, for reference types it is null.

In the case of user controls, the default value can be set using the DefaultValue attribute, and a TypeConverter if one is needed.
DaveyM69 7-Feb-12 16:37pm View
Good point - in winDef.h BOOL is defined like:
typedef int BOOL;
therefore, the return type should be an Int32 not bool (also not an IntPtr as that is 8 bytes on 64bit).
Edit: Updated to reflect this.
DaveyM69 26-Nov-11 9:01am View
OP posted:
Hi Richard,
Thanks for reply,[^]

here i find the Sample form for MK 500, .NET environment (Micro Kiosk)
DaveyM69 26-Nov-11 9:00am View
Do not post further questions or statements as solutions, please either update your original question or post a comment to the person you wish to respond to.
DO NOT post your email address in a public forum unless you wish to receive spam! I have removed it for your protection. Anyone who wishes to help you can contact you through this page.
DaveyM69 22-Nov-11 15:27pm View
Fixed a minor typo ;-)
DaveyM69 7-Nov-11 16:05pm View
Forgive me if I sound rude but I am perfectly clear on how interfaces work! Don't assume that because I'm not understanding you fully that my knowledge is lacking in the language fundementals.

It seems I may have misunderstood, you see this as an alternative for passing entire form instance references? I rarely pass an entire form and certainly wouldn't to facilitate the communication of one value as the OP wanted. I use the event/delegate method for this (or keep a reference in the owner) and was trying to understand how your interface fitted into this - the answer is it doesn't. You are simply using an interface (as a parameter to a constructor or similar I assume) to couple the forms as a slightly better alternative to coupling to a specific concrete implementation of a form.

Tight coupling of this kind, even if done with an interface, is something I avoid wherever possible.

Edit: I assume you mean something like this...
public interface IOwner
void SetText(string text);

public partial class FormMain : Form, IOwner
public FormMain()

public void SetText(string text)
Text = text;

public partial class FormOther : Form
private IOwner owner;

public FormOther()
: this(null)
{ }
public FormOther(IOwner owner)
this.owner = owner;

private void SetOwnerText(string text)
if (owner != null)
DaveyM69 6-Nov-11 14:53pm View
"Do not reduce the idea an absurd. No. You can implement only one or, say, two." This is the bit that concerns me most. In the property or event convention, when something changes we generally set a property to a single type of value or raise an event with data of a single value - we don't pass the entire object. You on the other hand are saying to pass an entire interface with possibly many properties (or keeping a constant reference to one - I understand a delegate does this too) every time just one value has changed.

If only one thing has changed or is about to change etc, that should be the only information presented/passed IMO, there is no need for an entire interface to be given each time.

I don't disagree that yours is a convenient approach and will work well, I just fail to see any advantage over the traditional and widely used approaches that are quite adequate for all situations.

I will experiment with it however, and if you and Bill do collaberate, please let me know as I would be very interested to see exactly how you implement this in a real world situation :-)
DaveyM69 6-Nov-11 9:50am View
Hi SAK, I have seen this answer of yours before and not responded as I wanted to ponder on your suggestion. However, I'm still having difficulty in seeing the benifit of using an interface over setting a property or sending a custom EventArgs depending on the direction of communication.
Interfaces are normally more suited to a particular functionality (eg IComparable) or a representation of a common object where an abstract class is not desired. While they can be used in this situation I'm not sure what we gain when passing discrete values. In fact, to ensure only the relavent data is available in a complex object such as a form we would need to create and implement many small interfaces so we only pass the interface that has the particular data required.
DaveyM69 3-Nov-11 10:39am View
Correct - 5.
DaveyM69 3-Nov-11 4:46am View
A couple of minor comments...
I don't like your method of blindly adding the deliminator even if it's not required and then creating an extra string by using Trim! Also, this will only take care of (with the parameterless Trim method), whitespace deliminators. You talk about maintainability, the deliminator requirement may change. This would be better IMO:

bool notFirst = false;
foreach(int number in numbers)
notFirst = true;
txtNorth.Text = sb.ToString();

You say "//anonymous delegate is the best" - why? For readability and maintainability a good old method is far better IMO. It also allows for code reuse if needed as the method could be called from elsewhere.
DaveyM69 1-Nov-11 16:21pm View
It's quite obvious that he means a 'Child' form i.e. one that is instanciated by another (main in this case) as the other posters realised.
As a regular in QA you should also realise that what you posted is a comment not a solution. I'll leave it for you to ammend.
DaveyM69 12-Oct-11 18:43pm View
Most barcode scanners I have come across can be programmed to use a different or no suffix. All the ones in my company for example are programmed to send TAB after the scanned code.
DaveyM69 12-Oct-11 17:11pm View
Finally got the hyperlink to work!
DaveyM69 11-Oct-11 12:59pm View
Hi Luc,
True, it's just a habit I've got into from being caught out occaisionally by objects that don't implement the == and != operators. If they do iplement them they will use object.ReferenceEquals() in their equality checks against null anyway so no overhead, more readable without perhaps ;)
DaveyM69 10-Oct-11 13:25pm View
Gets my 5! I prefer the second option everytime.
DaveyM69 29-Sep-11 17:31pm View
"In my opinion, as you cannot produce really unique sound, all this is not really good to create real "analog" music good for performance, say, for writing and distributing audio CDs. If you listen MIDI music for a long time you may feel irritated by its "mechanical" sound, because all the sounds are essentially repeated many time without having unique sounds typical for life music."
I do not agree - it depends on the quality of the MIDI recording and the device(s) used for playback. I use MIDI for recording (digital) piano alongside an audio recording of vocals for a duo. The PC then plays the Piano back exactly as I played it, nothing mechanical at all about it.
This reputation comes from people using software tricks such as quantizing where not appropriate and the poor quality sound of some early MIDI instruments and most soundcards (all the built in ones!) that people use to play back on later - neither of these are the fault of MIDI.
DaveyM69 6-Aug-11 7:00am View
This is possible too:
using System.Windows.Forms;

namespace ConsoleWithForm
class Program
static void Main(string[] args)

new FormConfig().ShowDialog();
// Or
Application.Run(new FormConfig());

// Stuff
DaveyM69 1-Aug-11 9:32am View
Wrap the code in your watcher_EventArrived method in a try catch and inspect the thread ID in the catch as I suspect it will be different when the exception is thrown.
If so, refactor your code and check toolSubMn1ConfigUFD's InvokeRequired property and invoke accordingly.
DaveyM69 27-Jul-11 13:12pm View
Good answer - 5ed
DaveyM69 25-Jul-11 14:41pm View
We need to see the C++ declaration of the function and your C# P/Invoke version of it.
DaveyM69 18-Jul-11 17:18pm View
Or better still, an InvalidEnumArgumentException:
DaveyM69 7-Jul-11 14:49pm View
Perhaps you should help us to help you by identifying the line on which the error occurs and what the error message is?
DaveyM69 18-Jun-11 6:32am View
Great link Pete, very interesting.
DaveyM69 17-May-11 17:22pm View
If you 'Improve Question' you can retag. I've done this one :-)
DaveyM69 4-May-11 18:21pm View
+= adds the right hand side to the left hand side so
Resultatet += Tarningsreulstat
is the same as:
Resultatet = Resultatet + Tarningsreulstat;
DaveyM69 4-May-11 18:19pm View
By the way, int.Parse can be dangerous. Run the app and enter a normal letter...
Have a look at int.TryParse here:
DaveyM69 4-May-11 17:58pm View
You need to code this yourself
DaveyM69 4-May-11 16:05pm View
This can only happen if the RunWorkerAsync is called from a non UI thread or called before the SynchronizationContext is set (normally happens when calling from a form's constructor - the Load event and beyond are fine) as an AsyncOperation is created which handles Post/PostOperationCompleted to the UI thread via the SynchronizationContext.
DaveyM69 4-May-11 15:29pm View
Reason for my vote of 3
Partially works but not complete - see my comment
DaveyM69 4-May-11 15:28pm View
Your solution doesn't handle pasting using the mouse or allow other valid edit/navigation keys.
Check out this old article of mine:
DaveyM69 21-Apr-11 8:20am View
Had confirmation for Microsoft, optional parameters should never have worked if missing, no reasons given for why they did work this way though. There could be a lot of broken code out there that will fail as it's recompiled for 4.0 and above...
DaveyM69 21-Apr-11 5:20am View
So why the downvote?
DaveyM69 14-Feb-11 3:34am View
Without seeing a code snippet of the section that is causing the error it's impossible to help.
The normal issue is trying to get/set yourArray[Count] when the highest element is at yourArray[Count - 1].
DaveyM69 11-Feb-11 9:53am View
As this isn't an answer you should have edited your original question to include the code - not posted as an answer!

Have youtried adding a call to Invalidate(); after this.Controls.Add(((ZoneItems)sender)[((ZoneItems)sender).Count - 1]);
Invalidate works in DesignMode too.
DaveyM69 11-Feb-11 8:40am View
This is not an answer, it is a comment so should be posted as either a comment to an answer or as an edit to your original question.
Nobody here will give you their email address or debug your entir project.
I am deleting this fake answer.
DaveyM69 5-Feb-11 12:13pm View
You have posted this as an answer but in no way does your post qualify as an answer - deleted.
DaveyM69 31-Jan-11 17:20pm View
@SAKryukov: You are correct - I misread the documentation.
This blog explains it better than MSDN:
Seems like there's no solution other than to check each returned result...
DaveyM69 15-Jan-11 6:44am View
According to a comment on Connect, _opt doesn't mean optional, just that you can pass NULL. If this is the case, it's wierd that it worked in ALL previous .NET versions!
DaveyM69 14-Jan-11 13:18pm View
I have filed a bug report at
DaveyM69 14-Jan-11 3:38am View
Hi guys, I just figured this out myself this morning and came by to update the tip!
Strange indeed, but at least it was easy to figure.
DaveyM69 12-Jan-11 13:59pm View
I would prefer << 8 to * 256 as it represents what is happening better - just a preference!
DaveyM69 9-Jan-11 13:56pm View
From the original question:
"If i call other forms then current form control loses focus."
Most likely Forms :-)
DaveyM69 9-Jan-11 11:03am View
Nice find Roger - could be useful, for the OPs problem ContainerControl.ActiveControl will get him what he needs.
DaveyM69 2-Jan-11 19:48pm View
@programmer095: This is the way all processors work (as far as I know). It makes sense really. 0x0000 - 1 must be 0xFFFF so therefore for a signed 16bit value 0xFFFF must be -1.
Also, using your theory there would be 1 less value available (-32768), and there would be +0 and -0 instead...
DaveyM69 21-Dec-10 19:28pm View
Not required, but highly recommended!
DaveyM69 19-Dec-10 8:46am View
Rewrite the 'old program' (from scratch if needed) so it doesn't require Administrator.
DaveyM69 30-Nov-10 9:25am View
To complete the answer...
To obtain the value of TEMP you will need to do:
DaveyM69 30-Nov-10 9:18am View
As you have posted your comment as an Answer, Pete will get no notification that it has been posted. You would be better reposting using the Add Comment link below his Answer and deleting this.
DaveyM69 22-Nov-10 18:51pm View
Hi Tim, I never got a notification of your post because you added it as an answer instead of a comment!
Did you sort this out? If not, add a comment to my post and I'll help you through it.
DaveyM69 13-Oct-10 3:51am View
Where are you creating the timer?
Where are you starting the timer?
DaveyM69 5-Oct-10 21:28pm View
What you have posted is not an answer.
If providing more information please edit the original question.
I have done this for you so I'll delete your 'fake' answer.
DaveyM69 5-Oct-10 21:25pm View
When posting, ask yourself - "Am I answering the qestion?".
If yes, then post as an answer.
If no (requesting more information etc) then post as a comment.
DaveyM69 28-Sep-10 18:30pm View
"Or else i may fail in my subject"
If you don't understand the subject then you should fail. That is a good thing - if you haven't been dedicated enough to work at it and are prepared to cheat by copying and pasting code from the internet, you really will not enjoy it as a career and would better off finding another subject to study that actually interests and motivates you.
DaveyM69 28-Sep-10 17:40pm View
It's generally bad practice to expose a field directly. The field should be private and exposed by a public property. (I'm not the one who 3 voted you by the way!)
DaveyM69 9-Sep-10 3:25am View
The answer is - it depends! Is the C++ function actually returning a char[] or a pointer to one? Where is the length of the array specified - in a parameter or a constant, or is it a null terminated one in which case it's really a string?
The easiest way for us to help you is if you give us the original C++ function declaration, from there it's normally pretty easy.
Alternatively, check out, especially the 'Marshaling Text' section.
DaveyM69 8-Sep-10 8:02am View
Reason for my vote of 5
Good answer!
DaveyM69 8-Sep-10 5:49am View
As o isn't used outside the foreach there is no need to declare it outside. Declaring inside keeps the scope limited as it should be:
foreach(object o ...

Calling ToString() inside Console.WriteLine is not required as WriteLine calls ToString on any objects anyway to write them.
DaveyM69 7-Sep-10 9:33am View
Had you highlighted the line where the error occurs and included the FULL error message we could have solved this much more easily! I have done this for you.
DaveyM69 6-Sep-10 10:37am View
I've had issues with this in the past, the active TabPage resizing but not repainting properly when using Anchor or Dock. Maybe this is what the OP is getting at?
Edit: I've just checked:
1. The page doesn't resize on Maximize.
2. When Minimizing the size is reduced but when restoring from the task bar it doesn't resize. Talk about buggy!
DaveyM69 30-Aug-10 5:54am View
As this isn't an answer you shouldn't have posted it as an answer!
You can edit your original post (Improve Question), I've done this for you, and if you wish to comment to an answer you've been given, use the Add Comment widget below it.
DaveyM69 28-Aug-10 6:53am View
This is good except for your OnSomeValueChanged method. There are two problems.
1. There is a possible race condition. SomeValueChnged could become null between the null check and the next line where you fire the event. To guard against this, make a copy of SomeValueChanged:
EventHandler eh = SomeValueChanged;
then use eh from that point.
2. It's generally better to pass the args to the OnXxx method as a parameter and make the OnXxx method protected virtual. This makes it possible to be easily overridden later in deriving classes.
DaveyM69 28-Aug-10 6:37am View
Keep event and change void to EventHandler
DaveyM69 27-Aug-10 18:32pm View
To Christian: "hideous thing to do"
I have to own up and say I normally give my fields and contructor parameters exactly the same name and use this to assign the parameters to the fields... saves all that horrible _field or m_Field stuff!
DaveyM69 25-Aug-10 11:43am View
These comments do not relate to your original question. Have a look at this forum post which explains how:
Basically, child forms raise events which are listened to by parent forms and parent forms set properties/call methods on child forms.
DaveyM69 25-Aug-10 4:04am View
That isn't an answer, it's a comment to my proposed answer therefore you should use the "Add Comment" widget below the post.
If you need class level scope, just create a class level variable.
DaveyM69 25-Aug-10 3:43am View
Which object creates the third form instance?
DaveyM69 24-Aug-10 18:15pm View
*laugh* No problem!
DaveyM69 24-Aug-10 17:14pm View
Look at Christian's previous comment!
If you need to respond to an answer, use the "Add Comment" widget below. The Add answer section is for answers not comments! Also, adding an answer won't alert the person you are trying to reach - Add Comment will.
DaveyM69 17-Aug-10 6:53am View
Reason for my vote of 4
Although the OP didin't specify or tag as WPF he has added a solution for that situation so counts as an answer as far as I'm concerned.
DaveyM69 7-Aug-10 10:44am View
Reason for my vote of 3
See my comments below.
DaveyM69 7-Aug-10 10:43am View
1. Public properties in the object that raises an event is another way. The downside is (to handle this correctly) you would need to use the sender parameter in the handler and cast it to the correct type to have access to those properties. Having them in the args is cleaner. Remember, the subscriber can use one handler for many events from different objects so long as the signatures are the same. Your suggestion makes that unworkable.

2. A bad idea due to the coupling created between objects. I would always avoid this!

3. Just to pass text it is maybe sometimes a little overkill, but using this principle any amount of data can be passed in one go.

Your suggestions are valid but, in my opinion apart from very simple situations that will never need to change with scope creep, not as useful or as observing of OOP principles.
DaveyM69 7-Aug-10 10:26am View is a good guide - be careful though as there are many incorrect submissions on there. The most common mistake I've found is using int instead of IntPtr. This will be OK normally on 32 systems, but has a reasonably high probability of failing if ever run on a 64bit OS.
Moral: Check the signatures against those declared in the relavent C/C++ header file or MSDN page and correct if needed.
DaveyM69 27-Jul-10 5:08am View
Reason for my vote of 5
Good question
DaveyM69 20-Jul-10 18:42pm View
To Toli:
Yeah, it's not an answer and should really have been a new question. This is the problem with a non threaded format such as QA! In this type of case IMO we should forgive the OP.
DaveyM69 19-Jul-10 16:10pm View
Glad you got it sorted! Strings are pesky little buggers as in .NET they are not null terminated char arrays as they are in C/C++ so pointers from the managed world are often not valid as string pointers in the unmanaged world even when using the MarshalAs attribute. StringBuilder has all this stuff taken care of deep down inside fortunately.
DaveyM69 18-Jul-10 5:55am View
I have edited your post as the code was totally illegible. Now it's properly formatted it's not much better due to many glaring errors. If you are going to paste code, at least make sure it compiles!
DaveyM69 16-Jul-10 18:14pm View
Reason for my vote of 5
Good answer
DaveyM69 15-Jul-10 9:58am View
Please don't post in the forum and Q&A as it gets messy. Pick one per question and stick with it.
C# Forum link:
DaveyM69 14-Jul-10 18:34pm View
There is no difference in code between WinForms and Console with the following exceptions...
Move the code out of the Main method and put it in it's own new (normally not static) method with a suitable name and call that at a suitable point (after the main form's constructor has done it's thing).
Console.Write/WriteLine will write to the VS output window (View|Output) instead of a console window.
DaveyM69 10-Jul-10 5:05am View
Reason for my vote of 5
Good answer
DaveyM69 8-Jul-10 18:44pm View
Looking at your edit...
Not possible. There has to be some look up somewhere, either the system DateTime or an independent source such as an NTP server.
If you really think your client(s) are going to rip you off, maybe you should reconsider doing business with them at all.
DaveyM69 8-Jul-10 5:31am View
Nasty! Killing processes is almost never the correct thing to do, especially when it's a basic design issue that can be fixed through a little code alteration.
DaveyM69 28-Jun-10 16:28pm View
For future reference, you should have posted this as a comment to the answer provided. Add Answer is for answers only, Submit Comment is for comments and further discussion.
DaveyM69 26-Jun-10 17:20pm View
Form2 should have a property (or properties) that can be set after instanciation from form1 (but before being shown) and then either...
form2 creates form3 and does the same
form2 raises an event and in the handler form1 creates & does it's thing with form3
DaveyM69 22-Jun-10 4:00am View
"Or just rip the CAPS LOCK key off your keyboard" - my kind of solution!
DaveyM69 14-Jun-10 18:11pm View
we need to be able to vote on comments - 'gainy decompression' has gotta be worth a 5!
DaveyM69 13-Jun-10 10:37am View
ROFL - Good point!
DaveyM69 13-Jun-10 8:40am View
Fair enough. Under the CPOL as I understand it you can use it (change it if needed) and give it away if you so wish so long as you retain any copyright notices in the code and don't pass those sections as your own work.
CPOL here:
DaveyM69 9-Jun-10 8:28am View
"not advisable from programming point of view"
What other point of view is there?
DaveyM69 8-Jun-10 4:52am View
Have a look at this from the same section:

Please post comments as comments not as an answer!
DaveyM69 5-Jun-10 8:26am View
There is no concrete answer - take a modern browser such as IE or FF. They both use an SDI with a tabbed interface. This could be equally be done with separate windows instead of tabs for an MDI. Which one you prefer or is better for your situation only you can decide.
DaveyM69 31-May-10 4:24am View
WaveInGetNumDevs gets all audio inputs on the system. If you have multiple soundcards then all the inputs are added together. To determine which is which you need to examine their capabilities.
Microphone and line in are part of a soundcard, they are not separate.
DaveyM69 30-May-10 3:23am View
I (and I suspect most other users here) haven't used 'Peachtree' so I have no idea what you mean. If you explain more clearly what you want and why existing controls can't do it we may be able to help!
DaveyM69 28-May-10 14:05pm View
Instead of calling AllocConsole in Main, call it from where you want it - don't forget to move and call FreeConsole where appropriate too!
DaveyM69 23-May-10 14:45pm View
If using BackgroundWorker.ProgressChanged event it will already be on the UI thread so no need to Invoke ;-)
DaveyM69 23-May-10 14:43pm View
Please use the Add Comment link below a post to reply to the poster.

John has given you the procedure - coding it is up to you. It's very easy. Have a go and if you get stuck, post the relevant code you have and any errors/exceptions you are getting and we will be glad to help.
DaveyM69 23-May-10 5:39am View
I have edited your post so it makes sense and formatted it - however, both the original and your suggestion will produce identical results (if true, but your 'improvement' will not set the Checked property to false when required).
DaveyM69 9-May-10 9:53am View
This is an English speaking site. I would suggest editing your question so it can be read by the site's members or posting on a site based in your own country. I am not being 'languagist', but it's unlikely that many will be able to help you if they can't understand the question!