|
|
What other solution would there be? An object could contain a reference to a reference to a ...
You have to at some point serialize it out to memory to get the complete size it takes up.
|
|
|
|
|
Hi
i'm doing a user control in C#, where i have textbox controles, when ever a textbox is clicked (when the event textBox1.Click is fired) i need to FIRE the this.Load event (not to call the this.Load event handler method!!!).
Because when i use this conrole in a form the event handler method will change.
Thanks a lot
PS: if you know how to do it on other .net languages tell me...it will be very helpful
|
|
|
|
|
1. Define an event:
public event EventHandler TextBoxClick;
2. Define a method to fire the event:
protected vitual void OnTextBoxClick(object sender, EventArgs e)
{
if (TextBoxClick != null) TextBoxClick(sender, e);
}
3. Fire the event from the associated event eg:
textBox1.Click += new EventHandler(Textboxclicked);
textBox2.Click += new EventHandler(Textboxclicked);
textBox3.Click += new EventHandler(Textboxclicked);
textBox4.Click += new EventHandler(Textboxclicked);
...
void Textboxclicked(object sender, EventHandler e)
{
OnTextBoxClick(sender, e);
}
4. Implemeted the TextBoxClick event on the form.
mControl.TextBoxClick += new EventHandler(methodtohandleevent);
There you have it! Merry Xmas
WebBoxes - Yet another collapsable control, but it relies on a "graphics server" for dynamic pretty rounded corners, cool arrows and unlimited font support.
|
|
|
|
|
I am relatively new to Windows forms and I wonder how could I detect that the mouse is still over the form if it moves
over a button or some other control on it?. The critical point is the border between a form and a child control. If I
use mouse enter and leave event for a moment the mouse is neither over the form or the control. In my case the whole
form flickers. How is this sort of event handling to be accomplished? I cannot find nothing that would give me a hint.
I would also like to know if the mouse is over the nonclient area of the form.
Thank you!
|
|
|
|
|
Hi,
How can I enumerate all network resources using C#?
I want to get list of a lan computers by IP or machine name.
|
|
|
|
|
The following is incomplete, but the part you need is there. It is based on code provided in a CP article by Leppie (sql server combo box, I think), refactored into a utility class with a few minor corrections.
public enum ServerTypes : uint
{
None = 0,
ALL = 0xFFFFFFFF,
WORKSTATION = 0x00000001,
SERVER = 0x00000002,
SQLSERVER = 0x00000004,
DOMAIN_CTRL = 0x00000008,
DOMAIN_BAKCTRL = 0x00000010,
TIME_SOURCE = 0x00000020,
AFP = 0x00000040,
NOVELL = 0x00000080,
DOMAIN_MEMBER = 0x00000100,
PRINTQ_SERVER = 0x00000200,
DIALIN_SERVER = 0x00000400,
XENIX_SERVER = 0x00000800,
NT = 0x00001000,
WFW = 0x00002000,
SERVER_MFPN = 0x00004000,
SERVER_NT = 0x00008000,
POTENTIAL_BROWSER = 0x00010000,
BACKUP_BROWSER = 0x00020000,
MASTER_BROWSER = 0x00040000,
DOMAIN_MASTER = 0x00080000,
SERVER_OSF = 0x00100000,
SERVER_VMS = 0x00200000,
WINDOWS = 0x00400000,
DFS = 0x00800000,
CLUSTER_NT = 0x01000000,
DCE = 0x10000000,
ALTERNATE_XPORT = 0x20000000,
LOCAL_LIST_ONLY = 0x40000000,
DOMAIN_ENUM = 0x80000000
}
public class ServerList
{
[DllImport("netapi32.dll")]
unsafe private static extern uint NetServerEnum([MarshalAs(UnmanagedType.LPWStr)] string ServerName,
uint level,
uint* bufptr,
uint prefmaxlen,
ref uint entriesread,
ref uint totalentries,
uint servertype,
[MarshalAs(UnmanagedType.LPWStr)] string domain,
uint resume_handle);
[DllImport("netapi32.dll")]
unsafe private static extern uint NetApiBufferFree([MarshalAs(UnmanagedType.AsAny)] object bufptr);
[System.Runtime.InteropServices.StructLayoutAttribute (LayoutKind.Sequential, CharSet=CharSet.Auto)]
private struct SERVER_INFO_101
{
public int dwPlatformID;
public System.IntPtr lpszServerName;
public int dwVersionMajor;
public int dwVersionMinor;
public int dwType;
public int lpszComment;
}
public ServerList()
{
}
public static string[] GetNtNodeNames(string ntDomainName)
{
return (GetServers(ntDomainName, (uint)(ServerTypes.SERVER | ServerTypes.WORKSTATION)));
}
public static string[] GetSqlServerNames(string ntDomainName)
{
return (GetServers(ntDomainName, (uint)(ServerTypes.SQLSERVER)));
}
public static string[] GetServers(string ntDomainName, uint serverTypemask)
{
string[] servers = new string[0];
string serverName = null;
string domainName = null;
if (ntDomainName != null)
if (ntDomainName.Length > 0)
domainName = ntDomainName;
uint level = 101, prefmaxlen = 0xFFFFFFFF, entriesread = 0, totalentries = 0;
uint resume_handle = 0;
uint stat = 0;
unsafe
{
IntPtr si = IntPtr.Zero;
SERVER_INFO_101* pTmp;
uint _serverType = serverTypemask;
try
{
stat = NetServerEnum(serverName, level, (uint *) &si, prefmaxlen, ref entriesread,
ref totalentries, (uint)_serverType, domainName, resume_handle);
if (stat == 0)
{
servers = new string[entriesread];
if ((IntPtr)(si) != IntPtr.Zero)
{
pTmp = (SERVER_INFO_101*)si;
for (int i = 0; i < entriesread; i++)
{
try
{
servers[i] = Marshal.PtrToStringAuto(pTmp->lpszServerName);
}
catch (Exception e)
{
throw e;
}
pTmp++;
}
}
}
}
catch (Exception e)
{
throw e;
}
finally
{
if (si != IntPtr.Zero)
stat = NetApiBufferFree(si);
}
return servers;
}
}
}
</small>
Hope this helps & Merry Xmas.
Some ideas are so stupid that only an intellectual could have thought of them - George Orwell
|
|
|
|
|
my previous post doesn't show up?
|
|
|
|
|
|
|
One of the reasons I can think of is that you don't want a programmer to break some important functionality.
For example:
sealed class RegulateControlRods
{
if (power > 10MW) LowerRods();
if (power < 5MW) RaiseRods();
}
or perhaps change its interface to other classes. For example:
public class RegulateControlRods
{
if (power > 10MW) LowerRods();
if (power < 5MW) RaiseRods();
}
public class HomerSimpsonNuclearPowerPlant : RegulateControlRods
{
if (power > 10MW) RunLikeHell();
if (power < 5MW) GoEatADohnut();
}
However, sealing things like "Point"???
Sometimes I think both C# and .NET were the result of some highschool student's finals project in Computer Science 101.
Marc
Help! I'm an AI running around in someone's f*cked up universe simulator. Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus Every line of code is a liability - Taka Muraoka
|
|
|
|
|
|
|
std::string is the same, only the compiler does not enforce it, only the absence of virtual destructors indicates that deriving from it is not what the implimenters want. Use has-a rather than is-a to extend these classes.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
|
It's not a waste of time, it's good design. The resultant class will not be derived from String, it cannot take the place of a string. This is by design. I like it. You should read 'Design and Evolution of C++' to get some insight into this sort of stuff.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
I'll take a look at the book, but it does seem very inconvenient, because if I wanted it to act like an "is-a" class I'd have to write pass-throughs for all the base class's methods. For something like String, this is a lot!
Incidentally, this is also why I'm not very enamoured with interfaces. The derived class ends up having to write the implementation.
Maybe I'm missing some core paradigm shift in OO programming.
Marc
Help! I'm an AI running around in someone's f*cked up universe simulator. Sensitivity and ethnic diversity means celebrating difference, not hiding from it. - Christian Graus Every line of code is a liability - Taka Muraoka
|
|
|
|
|
Marc Clifton wrote:
because if I wanted it to act like an "is-a" class I'd have to write pass-throughs for all the base class's methods. For something like String, this is a lot!
The point is that this is by design, it's a feature for the benefit of class implimenters. I was pretty annoyed that I could not derive from std::string also, but once I knew the reasons I was fine with it. Incidentally, C++ would let me derive from std::string, all they could do was write it so that anyone who knew what they were doing would know it was a bad idea. C# is etter in that it allows you to generate a compile error if you derive from a class which the implimenter did not want you to.
Marc Clifton wrote:
Incidentally, this is also why I'm not very enamoured with interfaces.
I don't like interfaces/no multiple inheritance either.
Marc Clifton wrote:
Maybe I'm missing some core paradigm shift in OO programming.
There's no paradigm shift that I can see, it's simply the ability to enforce something that you could only strongly suggest in C++.
Christian
No offense, but I don't really want to encourage the creation of another VB developer.
- Larry Antram 22 Oct 2002
C# will attract all comers, where VB is for IT Journalists and managers - Michael
P Butler 05-12-2002
Again, you can screw up a C/C++ program just as easily as a VB program. OK, maybe not
as easily, but it's certainly doable. - Jamie Nordmeyer - 15-Nov-2002
|
|
|
|
|
Point is sealed because it is a struct, and structs don't allow inheritence.
String is sealed because if some things were to change with its behavior it would cause vast shockwaves to flow throughout the framework because the way it is used is based on its implementation. If you were to modify String so that strings could mutate then vast portions of the framework wouldn't work correctly because the framework assumes string can't mutate.
As someone else pointed out, allowing some classes to be derived from could cause problems security wise.
James
[edit]fixed typo[/edit]
[edit2]yeesh, I think I need some sleep, clarified point about string[/edit2]
"The elastic retreat rings the close of play as the last wave uncovers
the newfangled way.
But your new shoes are worn at the heels and
your suntan does rapidly peel and
your wise men don't know how it feels to be thick as a brick."
"Thick as a Brick" from Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
String may be sealed simply because it is a "special" object. The .NET runtime does some things with strings internally that you can't do by using a String object, mostly in the name of efficiency. For instance, a "mutable" String is used inside the StringBuilder class, producing a much more efficient implementation. Change the implementation of String, and you don't just get errant code - you might get GPFs, memory leaks, or corrupted memory.
|
|
|
|
|
JasonSmith wrote:
Change the implementation of String, and you don't just get errant code - you might get GPFs, memory leaks, or corrupted memory.
Even worse, if you mutate a string using unsafe code the program works great only the output is a bit funky.
Someone posted some code doing this in the Soapbox quite a while ago, but essentially because of string interning you can change the textual representation of some things like True and False, that are output by boolean.ToString()
String interning is another optimization that wouldn't be possible if strings were allowed to mutate. If two strings are interned, then you can compare them by simply comparing the references or their location in the internal cache of strings. If they aren't interned, or you need case-insensitive comparisons then you need compare each character in both strings.
James
"The elastic retreat rings the close of play as the last wave uncovers
the newfangled way.
But your new shoes are worn at the heels and
your suntan does rapidly peel and
your wise men don't know how it feels to be thick as a brick."
"Thick as a Brick" from Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
Marc Clifton wrote:
Specifically, why are classes like Point and String sealed?
Jason mentioned something that got me to remember another reason for sealing classes. JIT optimizations when dealing with virtual methods
If you have a virtual method in a class and you seal one of its child classes the JIT can produce code to call the child class' implementation instead of going to a vtable approach that would otherwise be needed.
It still needs to rely on the vtable if the variable is of the parent class type, but when you specify the child class it isn't needed.
Sorry of that last paragraph didn't make sense, I couldn't think of a better way of describing it
James
"The elastic retreat rings the close of play as the last wave uncovers
the newfangled way.
But your new shoes are worn at the heels and
your suntan does rapidly peel and
your wise men don't know how it feels to be thick as a brick."
"Thick as a Brick" from Thick as a Brick, Jethro Tull 1972
|
|
|
|
|
|
Can anybody tell how to call GetIPictureFromPicture(Image image) method using C#.
regards,
sns
|
|
|
|
|
using System;
namespace OffAutomation
{
///
/// Summary description for Class1.
///
public class ImageConverter: System.Windows.Forms.AxHost
{
public ImageConverter():base("59EE46BA-677D-4d20-BF10-8D8067CB8B33")
{
//
// TODO: Add constructor logic here
//
}
public static stdole.IPictureDisp ImageToIpicture(System.Drawing.Image image)
{
return (stdole.IPictureDisp)ImageConverter.GetIPictureDispFromPicture(image);
}
}
}
this is the way u have to write a class...
and call like this
Image img = System.Drawing.Image.FromFile(@"F:\yicon.ico");
stdole.IPictureDisp obj = OffAutomation.ImageConverter.ImageToIpicture(img);
|
|
|
|
|