|
Hi!
Sorry to hear that you've been crook - hope you're feeling better!
Because of the way objects work your custom event will be fired once for each object. This is expected and normal behaviour. If I'm not mistaken, you would like to ensure that the event only fires once - across all instances of your custom combo box no matter how many there are.
If that's the case, you could create a static private boolean variable at the class level (call it, say, "fEventFired") and whenever you need to fire your custom event perform a check on that variable. Only fire the event if it's false. Once you've fired the event once, set fEventFired = true and that will ensure it never fires again:
protected void OnCustomEvent(EventArgs e)
{
if (!fEventFired)
{
CustomEvent(this, e);
fEventFired = true;
}
}
Because the variable is static it'll be shared across all instances of your class. Bear in mind that this will mean that you won't be able to fire that event again for the duration of your application. If you needed to customize this you could always create an internal static property that get/sets the flag.
Hope this is of some use to you!
Regards,
-Adam.
|
|
|
|
|
Hello Adam,
Sorry, I apperently did not communicate too well. What I want is for the event to fire once per instance. In other words, say I have 5 custom controls on the form and the event should be raised by instance3 due to some user action with instance3. I want the event to fire once for instance3.
What is happening in the above scenario is that the event is appearing 5 times (once for each control) when it is raised by instance3.
As an example, if you have 5 standard comboboxes on a form and you are reacting to the DropDown event, if the user clicks the arrow on combobox3, the DropDown event is only fired once and only by combobox3. Even though the others have DropDown events wired, nothing happens with them.
If the above worked the same way my custom control is working, the DropDown event for combobox3 would actually happen 5 times, once for each combobox on the form.
Thanks for your continued interest and discussion!
Have a great day!
j2associates_NO_SPAM_@yahoo.com
|
|
|
|
|
Hi!
Ok, that makes perfect sense now (honest! ). To raise the event on ONLY instace 3, and it fires not only for instance 3, but 1, 2 and 4 as well (for example), when you've only manipulated instance 3.
I can now conclusively say that is quite bizarre behaviour. . Can we see some code? Specifically the code for the custom implementation of ComboBox? If it's quite long, perhaps just the event definition and the code that calls the event.
Off the top of my head I can't think of a logical explanation for this. It doesn't make sense how firing one event on one particular control causes the same event to be fired by ALL instances of that control.
-Adam.
|
|
|
|
|
I've added a tabcontrol to my C# dialog app. I set an event on one of the tabs to fire when someone clicks on the tab, but it never seems to work. I've tried other events and they do not seem to work.
Any suggestions as to what I need to do or what code to post here for help?
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
You get a SelectedIndexChanged event when the selected tab changes. If you click on the tab itself at the top, the TabCtrl raises the Click event, but if you click somewhere on the page (not the tab), the TabPage raises the Click event.
See the note below the table here[^].
-- LuisR
Luis Alonso Ramos
Intelectix - Chihuahua, Mexico
Not much here: My CP Blog!
|
|
|
|
|
That did it. I kept trying to add the event to the individual tabs.
Thanks
Tom Wright
tawright915@yahoo.com
|
|
|
|
|
|
what are the good class generators for databases in sql server to C#, i have found some tools but which good tools do U guys recommend ?
|
|
|
|
|
CodeSmith[^] is a very good one.
Steve Maier, MCSD MCAD
|
|
|
|
|
I have used OlyMars and had good results. It produces the data access layer and very usable business components. It's beta and has some quirks in the gui but it's worth a look.
http://www.microsoft.com/france/msdn/technologies/outils/olymars/default.asp
|
|
|
|
|
Hi,
I have a series of labels named light1, light2,...
I'm in a foreach loop of a HashTable i where the indexes are named light1,light2,...
Is there a way to change the proprerty of a Label without doing something like:
foreach ( String i in backupserver.Keys ){
.
.
.
if ( i.Equals("light1" ) )
light1.BackColor= System.Drawing.Color.LimeGreen;
if ( i.Equals("light2") )
light2.BackColor= System.Drawing.Color.LimeGreen;
.
.
.
I'd like to be able to do something like:
foreach ( String i in backupserver.Keys )
{
.
.
"i".light1.BackColor= System.Drawing.Color.LimeGreen;
}
Where "i" would be translated at runtime to light1,light2...
Other than that it takes a lot of lines to have all the condition covered.
Hope someone can help!
Thanks
Pierre
|
|
|
|
|
What are the values of the Hashtable? The controls?
You could iterate through the control collection:
if (val is Label)
{
((Label)val).BackColor=Color.LimeGreen;
}
or something like that.
Marc
My website
Latest Articles:
Object Comparer
String Helpers
|
|
|
|
|
Actually, the hashtable is a machine name and a log file name as:
backupserver.Add("light1","\\\\light1\\d$\\logs\\log.txt");
.
.
.
|
|
|
|
|
I was wondering if you as a C# programmer try to keep the line width of your code under a certain number of characters.
Back in my C days, I tried to keep all lines of code within 72 characters. This wasn't hard to do. But I'm finding it impossible with C#. For one thing the .NET coding guidelines discourage abreviated names for classes, methods, events, etc. (which I understand and agree with). But more importantly, with namespaces, classes, methods, and so on, I find myself indenting further and further before I even get to the meat of the code. And it's even worse if you're trying to make the class thread safe using the lock mechanism.
To show you what I mean...
namespace SomeNamespace
{
private readonly object lockObject = new Object();
public class SomeClass
{
public void SomeMethod()
{
lock(lockObject)
{
}
}
}
}
I find it imposible in many cases to keep the code within a certain line width. I'm not complaining; I appreciate all of these constructs that make programming easier to manage and reason about. But I was just wondering what other C# programmers think about line width. What approaches do you take? Or do you just not worry about it?
|
|
|
|
|
It's beeter to consider readability than line length or line count. Indenting improves readability.
If you need to use a shorthand version of a namespace or class, try out the using statement:
using d3d = Microsoft.DirectX.Direct3d;
As an aside, it isn't recommened you make classes thread-safe by default. Making classes thread-safe comes at the expense of performance; everything has to acquire a lock, which is inefficient and can lead to deadlocks and locking of the UI thread. Rather, if you need a thread-safe class, make a wrapper around your class that uses locks, or have the calling code do the locking.
And an FYI, line lengths are only going to get longer with generics in .NET 2.0, where generic methods must have type argument supplied to them, further lengthening some method calls. Additionally, using foreach over some generic list or dictionary looks pretty long:
foreach(KeyValuePair<tstring, bool> pair in myStringBoolDictionary)
{
}
That alone is 72 characters; the main thing to worry about is readability, IMO.
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Conversation With a Muslim
Judah Himango
|
|
|
|
|
I am working on a server application and I need to use the windows ping utility to ping the clients, can anyone tell me how to do this in C#???
|
|
|
|
|
|
I'm not sure why you think you need to do this. It typically won't work properly if the client is behind a firewall - either a personal firewall such as Norton Internet Security or Windows Firewall in XP SP2, or a hardware device. If the client is behind a Network Address Translation device, if anything responds it's likely to be the NAT device rather than the client itself. Most firewalls now refuse to respond to the ICMP Echo messages sent by ping .
Even if you could do this, there's no guarantee that if this packet got through, that the eventual response would do. There's no guarantee that the program connecting to you is still running - just that the client's network stack is responding. So it doesn't actually give you the information you're after anyway.
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
code in C# to:
search an entered ip address or computername in a network.(not using any database).
Amar
|
|
|
|
|
What do you mean "search an entered IP address"? Are you trying to run a file search on that machine?
Tech, life, family, faith: Give me a visit.
I'm currently blogging about: Conversation With a Muslim
Judah Himango
|
|
|
|
|
Code in C#, where an user enters an ip address or computername, to search in a network. The result will be in the form of a messagebox, saying " the computer is present".
Amar
|
|
|
|
|
You mean your trying to see if a machine exists if you can Ping that machine name or address. Search for "Ping C#", you'll come up with hundreds of examples.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
i need a ready code for ping, where:
1) i enter a ipaddress or computer name in a textbox
2) the response is recorded in a listbox.
the code should b in C#.
i searched in codeproject, but cold not get proper code.
Amar
|
|
|
|
|
The only way you're going to get "proper code" is if you write it yourself. Like I said before, Google for "C# Ping" and you'll come up with tons of examples on how to ping. You then have to supply the rest of the code to get exactly what you want.
The Code Project is about helping people with their code, not writing it for them.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
In the following,
double d = double.NaN;
bool bd = d == double.NaN;
float f = float.NaN;
bool bf = f == float.NaN;
both Booleans return false.
What gives?
Thanks,
Tom
|
|
|
|