|
Hi guys, I hope there is a simple explanation, or a simple workaround for this...
I need to capture both the click and double click events of a control. Depending on the event, the eventhandlers will do two totally different things.
The problem is, it seems that if you subscribe to both events, you ALWAYS get a click event before you get a doubleclick event.
Here's a little experiment I did when I got curious. Place a label on a form and set it's text property to "". Now add both a click and doubleclick event handler to the FORM. In the click event handler do the following
label1.Text="SingleMouseClick"
and in the doubleclick event handler...
label1.Text+="DoubleMouseClick"
Now, run the app and DOUBLE CLICK the form.
I get the label spittig out SingleMouseClickDoubleMouseClick indicating that the click event code ran first.
How can I get around this? I really want the events to be separate.
James, I know you're listening...you must have a plan as usual
Regards
Senkwe
Just another wannabe code junky
|
|
|
|
|
Senkwe Chanda wrote:
James, I know you're listening...you must have a plan as usual
LOL, yep you got me
The reason for having both events fire is to make the UI appear responsive, since the double-click time can be changed in the control panel you could have to wait up to a second or more before a click event would fire since it would have to wait to see if the second click ever occurred before firing the click event. whew, that was long winded :-P
Now for the fix.
Have your single click event handler enable a windows timer; have the double-click even disable that timer and do whatever you want.
Inside of the tick event in the windows timer is where you would code the single-click stuff.
You can obtain the maximum number of milliseconds that can elapse between clicks by reading the SystemInformation.DoubleClickTime property.
To be even more thorough you need to also ensure that the second click occurs within a rectangle of size SystemInformation.DoubleClickSize from the first click.
I highly recommend that you first set your double-click time way up; so you can see if this is going to be detrimental to the usability of your application.
HTH,
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Thanks again James, that should work beautifully.
Regards
Senkwe
Just another wannabe code junky
|
|
|
|
|
How to programmatically add a new control in Window Application in C# language?
|
|
|
|
|
MyControl c = new MyControl();
this.Controls.Add(c); Simple
I assume that this code is being executed in the forms class.
This is also how you add a control to a windows form normally.
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Thank you! I can add a new control but i can't set the properties for the control. this is my code:
TextBox tb = new TextBox();
this.Controls.Add(tb);
this.tb.Location = new System.Drawing.Point(150, 100);
this.tb.Multiline = true;
this.tb.Name = "textBox2";
this.tb.ReadOnly = false;
this.tb.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.tb.Size = new System.Drawing.Size(168, 32);
this.tb.TabIndex = 1;
this.tb.Text = "textBox1";
this.tb.Visible = false;
It gives errors. How to set the properties on the control?
|
|
|
|
|
What errors are you getting?
From what I see that code is fine; though I don't think it matters can you try psetting the properties before you do the 'this.Controls.Add(tb)'?
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Ok, i got it ! I am not suppose to put
'this.tb.Location(....)'
but this:
'tb.Location(....)'
ok... Thank you very much!!
thongkk
|
|
|
|
|
lol, I can't believe I missed that! At least you have it figured out now
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
I would guess
Container.Controls.Add(new Control());
without having tested it yet
*woops, didnt notice the earlier post agreeing.
|
|
|
|
|
Hi !
Did anyone know an article who describes "how to install and starts a windows service remotely." I would like to implement such a function in C#.
Thanks in Advance
:confused
|
|
|
|
|
I'm trying to figure out if there's something wrong with my system or if it's normal. I don't remember it being this slow before.
I made a very small console app that opens a text file, writes one line to it and then reads that line back and prints it to the screen. It takes 22 seconds to run. The system is a pIII 700 with 256 megs of ram running win2K. I'm pretty sure that with the beta framework's small console apps ran at a reasonable speed.
Is this normal or is there something wrong with my installation?
|
|
|
|
|
that certainly sounds like its way too long; even with the JITing. Just to be sure though run ngen on your exe, then time it again. ngen will pre-JIT so the only startup time will be loading the framework.
HTH,
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Uninstalled and reinstalled the framework and it's fixed. takes only a couple seconds to fire up the first time. Pretty much instant the second time.
|
|
|
|
|
I have a label and I want to change the font style to bold or italic programmically.Can anybody tell me the code?
Mazy
Don't Marry a Person You Can Live With...
Marry Someone You Can Not Live Without
|
|
|
|
|
Based on ASP.net work (it may not be the same)
Object.Font.Bold = true;
Object.Font.Italic = true;
Object.Font.Name = "verdana";
etc.
// Rock
|
|
|
|
|
I used this code but there is an error return for it:
E:\....(106): Property or indexer 'System.Drawing.Font.Bold' cannot be assigned to -- it is read only
Any suggestion?
Mazy
Don't Marry a Person You Can Live With...
Marry Someone You Can Not Live Without
|
|
|
|
|
ok, I fired up a winforms project and I have no idea. The property is listed as get only in code, but is settable in the designer.
// Rock
|
|
|
|
|
Most of the properties on a Font are read-only; you have to create a new font object and assign it to one you wanted to change.
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Sorry James,Could you give an example?
Mazy
Don't Marry a Person You Can Live With...
Marry Someone You Can Not Live Without
|
|
|
|
|
Mazdak wrote:
Sorry James,Could you give an example?
Certainly
Font newFont = new Font(myLabel.Font,
FontStyles.Bold | FontStyles.Italic
);
myLabel.Font = newFont;
If you want to change more than the font style you'll have to extract all of the needed properties from your old font and pass them to the constructor to the Font class.
ms-help://MS.NETFrameworkSDK/cpref/html/frlrfsystemdrawingfontclassctortopic.htm
The url above is for the .NET documentation; putting you right at the constructor list; since there's way too many for me to want to type
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Thanks,I'll check it
Mazy
Don't Marry a Person You Can Live With...
Marry Someone You Can Not Live Without
|
|
|
|
|
There is a little mistake here James,you should use singular 'FontStyle';)
Thanks again
Mazy
Don't Marry a Person You Can Live With...
Marry Someone You Can Not Live Without
|
|
|
|
|
Mazdak wrote:
you should use singular 'FontStyle'
Oh man, today isn't my day! Earlier this morning I made another mistake in the data class thread.
Maybe thats a sign that I should go to sleep!
James
Sonork ID: 100.11138 - Hasaki
"My words but a whisper -- your deafness a SHOUT.
I may make you feel but I can't make you think." - Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Hi All,
I am currently creating an application that needs to populate a number of arrays and then I need to be able to call them again in different parts of the application.
At the moment I have figured out how to Populate an array if I know how many items I am going to have but how do popualte and array when I don't know how many items there are.
And How do I find out how many items there are in an array once it is populated?
This is what I have at the moment
====================
string[] ClinicNames;
ClinicNames = new string[99];
int j = 0;
while (dReader.Read())
{
ClinicNames[j] = dReader.GetString(1);
j = j + 1;
}
====================
|
|
|
|