|
Here is a sample code that will open a connection to sql server using reflection.
string connString = "Server = localhost; Database = EmployeePortal; User ID = abc; Password = abc; Trusted_Connection = False;";
Assembly asm = Assembly.Load("System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Type[] tps = asm.GetTypes();
foreach (Type tp in tps)
{
if (tp.IsClass)
{
if (tp.Name == "SqlConnection")
{
Console.WriteLine("Sql connection found...");
}
MethodInfo[] methods = tp.GetMethods();
object abc = null;
try
{
abc = Activator.CreateInstance(tp, connString);
}
catch (Exception ex)
{
}
foreach (MethodInfo method in methods)
{
if (tp.Name == "SqlConnection" && method.Name == "Open")
{
Console.WriteLine(method.Name);
method.Invoke(abc, null);
}
}
}
}
Jayant D. Kulkarni
Brainbench Certified Software Engineer in C#, ASP.NET, .NET Framework and ADO.NET
|
|
|
|
|
Firstly, Thanks.
You helped me alot.
I got the concept you are telling.
On the basis of your example, i tried for messagebox function.
But it is giving me exception "Parameter Missmatch".
I am not getting were do i can function returned value
Rahul Kulkarni
|
|
|
|
|
If you have overloaded methods then you need to check which method you want to execute. Here is the sample code to call MessageBox.Show("Hi").
Assembly winAsm = Assembly.Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
Type[] allTyps = winAsm.GetTypes();
foreach (Type typ in allTyps)
{
if (typ.Name == "MessageBox")
{
Console.WriteLine("MessageBox found...");
MethodInfo[] mtds = typ.GetMethods();
foreach (MethodInfo mtd in mtds)
{
if (mtd.Name == "Show")
{
if (mtd.GetParameters().Length == 1)
{
mtd.Invoke(typ, new object[] { "Hi!!" });
}
}
}
}
}
Jayant D. Kulkarni
Brainbench Certified Software Engineer in C#, ASP.NET, .NET Framework and ADO.NET
|
|
|
|
|
|
Hello! I am developing a GUI and I am having an strange problem. It
should be a very easy thing, but I have been walking around it for a
while. In my Form, I have a picturebox. I want to detect when the
mouse pointer enters the picturebox area WHILE the mouse left button
is pressed.
I have tried mouseenter, mousedown and mousemove events and none of
them are rised when I enter the control area with the mouse pointer
WHILE the left button is clicked!!!
Any ideas?
Thank you very much in advance!
Alvaro
|
|
|
|
|
The event you want to treat is fired only if the none of the mouse buttons are pressed.
To overcome this behaviour, treat the MouseMove event of the form like this:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pt = pictureBox1.PointToClient(Cursor.Position);
Rectangle rc = pictureBox1.ClientRectangle;
if (rc.Contains(pt))
{
}
}
} where pictureBox1 is your PictureBox object
SkyWalker
|
|
|
|
|
Hi, Skywalker.
I have tried your solution, but this event is only fired when the mouse is moved in the form, outside the controls (I mean, move it around the background), so as soon as I move my mouse in a picturebox, it is not firing.
I am sorry... maybe trying to simplify the problem I haven't shown the correct enviroment. I will try it again:
I have a form with a panel, and in that panel I have 5 pictureboxes. When the user clicks (and hold the mouse button pressed as if he were dragging) into one of these five pictureboxes, I set a "origin" integer var to 1-5. What I want to do is, when the user moves the mouse with that button pressed and pass over one of the other picturbox, set a "target" integer variable with a value between 1 and 5.
The user could, in example set a origin and drag over several of the other pictureboxes updating the "target" var without release the mouse button.
Any ideas or comments would be very appreciated.
Thank you very much in advance!!!
Alvaro
|
|
|
|
|
Believe me, I've tried the code before posting it
MouseMove is fired alright!
SkyWalker
|
|
|
|
|
Clever idea!
got my 5
|
|
|
|
|
Vielen Dank
SkyWalker
|
|
|
|
|
What you are suggesting works in the case you click the left button in the main form, outside the pictureboxes. If you create two pictureboxes: picturebox1 and picturebox2 in your form and assign picturebox1 the mousedown event and the whole form the mousemove event you proposed,you will reproduce my problem. What I want is: clicking in area of the picturebox and holding the button pressed (drag, if you prefer), go to the area of the picturebox2 and obtain the message: "I have gone from 1 to 2" while my mouse button is still pressed.
I hope the code below clarify the issue.
int origin=0;
int target=0;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pt = pictureBox2.PointToClient(Cursor.Position);
Rectangle rc = pictureBox2.ClientRectangle;
if (rc.Contains(pt))
{
target = 2;
// Do what you wanted to do within the MouseEnter event handler
MessageBox.Show("I have gone from " + origin + " to " + target);
}
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
origin = 1;
}
Any ideas? Thank you for all your efforts!
|
|
|
|
|
So what!
Copy the same code within the MouseMove event associated to the other control you want
( private void OtherPicture_MouseMove(object sender, MouseEventArgs e) )
And if you want a more general approach, then you have to do a little effort, but the idea is the same Try!
SkyWalker
|
|
|
|
|
And it's still clever!
|
|
|
|
|
OK. I have done what you have recommended, but it is unuseful. I have written then next mousemove event fot both the inkpictures:
private void inkPicture_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
PictureBox pb = (PictureBox)sender;
if (e.Button == MouseButtons.Left)
{
if (pb == pictureBox1)
{
target = 1;
}
else if (pb == pictureBox2)
{
Console.WriteLine("Asigned 2");
}
}
}
}
What I want is to get both the message "Asigned 1" and "Asigned 2" WITHOUT RELEASE THE MOUSE BUTTON, I mean, clicking and holding the mouse button in one of the two pictureboxes and going over the other one with the button still clicked. Please, try it. If you keep the button pressed when you leave the original picturebox, it remains throwing the mousemove event for that picturebox you have just leaved as if you were still in its area. That is my problem, and that is why I cannot detect when entering the new picturebox. I really hope my explanation to be clearly enough this time.
Any ideas?
Thank you very much in advance!!!
|
|
|
|
|
Finally I got it. It seems that there is some kind of problem with mousemove when the mouse button is pressed and you get out of a control area, so finally I programmed it manually (this is what I was trying to avoid, Skywalker). I also had some problems with the "Contains" method, so I programmed it manually too. Here is the code for the mousemove event for both the pictureboxes:
public bool Contains(Rectangle r, Point p)
{
return (p.X >= r.X && p.Y >= r.Y && p.X <= (r.X + r.Width) && p.Y <= (r.Y + r.Height)) ? true : false;
}
private void inkPicture_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pt = this.PointToClient(System.Windows.Forms.Cursor.Position);
if (Contains(pictureBox1.Bounds, pt))
{
Console.WriteLine("Assigned 1");
}
else if (Contains(pictureBox1.Bounds, pt))
{
Console.WriteLine("Assigned 2");
}
}
}
}
Thank you ver much!
|
|
|
|
|
Hi
Pls help i'm looking alogorithm for encryption code to secure information using remote access. and how to connect Ms Access(Database) with java to store password and username in database.
zskhumalo
|
|
|
|
|
I have suddenly found that some of the forms in my app will no longer show in the designer, they show the above message, and this stack trace:
at System.Windows.Forms.NativeWindow.WindowClass.RegisterClass()
at System.Windows.Forms.NativeWindow.WindowClass.Create(String className, Int32 classStyle)
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.TabControl.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.ControlCollection.Add(Control value)
at System.Windows.Forms.Form.ControlCollection.Add(Control value)
at System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.Add(Control c)
According to google, it seems I'm the only one to whom this has happened in the designer. This is happening on forms I have not modified. Any thoughts ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Hello Christian,
Looks like a control (UserControl) on your form throws an exception on design time. (Constructor code, eventhandler, property setter, ...)
Have you tried to connect to your design process over a second instance?
If you then change the settings that you jump in the code whenever an exception is thrown, you would find the problem.
All the best,
Martin
|
|
|
|
|
Martin# wrote: Have you tried to connect to your design process over a second instance?
how do you do that?
life is study!!!
|
|
|
|
|
For example the VisualStudio starts a process called "devenv.exe".
In my studio under "Debug"-"Process" you can connect this process.
All the best,
Martin
|
|
|
|
|
cool.. thx man!!
life is study!!!
|
|
|
|
|
Yeah, tried that, it didn't catch anything.
Christian Graus - C++ MVP
'Why don't we jump on a fad that hasn't already been widely discredited ?' - Dilbert
|
|
|
|
|
Hmmm,
What I also have sometimes:
Our Project is under subversion control.
If I update my projects - then open the solution - then open a form with controls thet have been changed, without compiling; Then the designer is "confused" and shows me a blank form.
What I have to do then is to close all forms and classes, then close the "Project map" ("Projektmappe schließen" in german) and close the Studio.
After starting the solution and compiling it works again.
All the best,
Martin
|
|
|
|
|
Yah.. this is happened frequently for, me..
Whenever i do some designer changes.. any change in designer.cs file, the form will scream in Red color or it will say Intializer error or sometime it will be blank screen
The only solution is to close the project/studio and reopen and rebuild again.
Srini
|
|
|
|
|
happened to me a lot of times.. my solution is to close designer, open source and from the source click 'view designer'.. if this doesn't help i build solution (designer closed) and then reopen designer from source..
life is study!!!
|
|
|
|