|
I've made a small application where you can drag an image from a picture box into a panel, but I want to create a picturebox where the user lets go off the left mouse button and has the picture they dragged into it (this will be in the DragDrop Event)
Can anyone help?
|
|
|
|
|
Do you have any code to show where you are having trouble?
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
private void panGameDesign_DragEnter(object sender, DragEventArgs e)<br />
{<br />
if (e.Data.GetDataPresent(typeof(Bitmap)))<br />
{<br />
e.Effect = DragDropEffects.Copy;<br />
}<br />
else<br />
{<br />
e.Effect = DragDropEffects.None;<br />
} <br />
}<br />
<br />
private void panGameDesign_DragDrop(object sender, DragEventArgs e)<br />
{<br />
}<br />
<br />
private void picMario_MouseDown(object sender, MouseEventArgs e)<br />
{<br />
picMario = (PictureBox)sender;<br />
DoDragDrop(picMario.Image, DragDropEffects.Copy);<br />
}
The Do Stuff is what I'm having trouble with, I've no idea what code to use so I cut it out and left a comment.
|
|
|
|
|
I think you have to create a new picturebox control in the DragDrop event, after that, you copy the dragged picture into the newly created control in the panel. I could be wrong, but that is first thing coming to mind...
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
That's what I thought but I don't know the code to do that.
I wanted it to create a picturebox with the dragged picture where the user lets go of the left mouse button.
Does anyone have the code or could someone give it too me?
|
|
|
|
|
To add a new control, use this.Panel1.Controls.Add( {yourNewControl} )
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
I've made this code:
<br />
PictureBox pic = (PictureBox)sender;<br />
pic.Image = (Bitmap)e.Data.GetData(typeof(Bitmap));<br />
this.panGameDesign.Controls.Add(pic);
But it doesn't work and doesn't create it where the mouse button is let go, could someone help me edit it?
|
|
|
|
|
your code:
- did not create a new control (there is no creational method called, no new keyword used,...);
sender can not possibly point to a Control that does not yet exist, it refers to
the old PictureBox at best.
- did not add the new control to your form's Controls collection, it tried to add an existing
Control to the form's Controls collection again
- did not set the location of the new control
- did not set the size of the new control
- did not insert the image in the new control, it did set it in the old control (which does
not change it).
You will have to add/modify one or more lines of code to solve each of the above shortcomings.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
PictureBox pic = new PictureBox();<br />
pic.Image = (Bitmap)e.Data.GetData(typeof(Bitmap));<br />
pic.Size.Width = 32;<br />
pic.Size.Height = 32;
As you can see, this won't work because I'm new to this sort of coding (I'm at a beginner level) and this is the best I can do as I do not know many complex commands.
I can't quite get my head around this, could someone correct it for me?
|
|
|
|
|
you got a bit closer.
check your code again with my list of requirements.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
PictureBox pic = new PictureBox();<br />
pic.Image = (Bitmap)e.Data.GetData(typeof(Bitmap));<br />
pic.Width = 32;<br />
pic.Height = 32;<br />
pic.Top = Cursor.Position.X;<br />
pic.Left = Cursor.Position.Y;<br />
this.panGameDesign.Controls.Add(pic);
Even closer, this is my own code, it works but it creates the picture box in a random position in the panel.
|
|
|
|
|
From the documentation:
Cursor.Position gets...a Point that represents the cursor's position in screen coordinates
Control.Top ... gets or sets the distance, in pixels, between the top edge of the control and the top edge of its container's client area
So I don't think the position is random, but I am sure it is not what you want either.
If used correctly, Control.PointToClient() should help you.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
I've replaced the old placement code with:
pic.Location = this.PointToClient( new Point (e.X, e.Y) );
It creates it nearer to the mouse but not at the exact X and Y of the mouse...
I solved it, it was panGameDesign.PointToClient(); not this.PointToClient();
Thanks for the help
modified on Sunday, January 27, 2008 3:32:20 PM
|
|
|
|
|
I haven't done DragDrop myself lately, and you are not providing much detail on the deviation,
but maybe you could/should use DragEventArgs.X/Y instead of Cursor.Position
Try to find out how the deviation relates to other stuff, such as:
- where exactly you click the source image,
- peculiarities of the PictureBox; what BorderStyle and SizeMode do you use on both?
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Luc Pattyn wrote: I haven't done DragDrop myself lately
Same here. Did some a while back, about 3-4 months ago.
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
the "If used correctly" bit was relevant then.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi,
I have a problem I never encountered...and sites across the net didn't help much.
I have a class exposing a public method which clears a queue object. On a form using this object, when calling this method ..is causing an exception : Method not found.
What is exactly this exception!? My method is there and was created normally.
What possible solutions are there?
I'm using C# with .net 2.0 and I have .net 1.1 installed previous to 2.0.
Regards
Kev.
|
|
|
|
|
Hi
The Exception message should tell you the name of the missing method.
The exception can have many causes like:
- there's no method with that name at all
- there's no method that takes parameters of this type
- there's no method with that return time
it can happen if you change a dll and copy the new version of an exe that uses it, but not the new version of the dll...
or the app loads the wrong clr assemblies (1.1 instead of 2.0)
take look at the loaded assemblies. check the versions and their codebase (you cann get a list of all loaded assemblies in the appdomain class. GetLoadedAssemblies i think)
greets
m@u
|
|
|
|
|
What is the exception text? Without seeing it, I have no idea.
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
Are you using invoke?
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
Is it a static method? If so you can't call it on an instance. Without seeing the exception or the code then there's bugger all else we can do to help.
BTW - change your subject to something more intelligent. We know it's a question about C# - this is a C# forum after all.
|
|
|
|
|
No..not static just a simple
public class X
{
public void Y()
{
}
}
the class in a project and the caller is in another project..both c#
Both projects compile...
...during execution/debugging the "Method not found" exception is raised!
Regards
Kev
|
|
|
|
|
HI,
I Like to know if anyone know a good Article about
Code Optimization in C#
i'd like to know how to reduce The memory Occupied by the APP
i don't know where to start becasue it's an unknown world to me
THNKS
Have Fun
Never forget it
|
|
|
|
|
half-life wrote: i don't know where to start
Start with google
"I guess it's what separates the professionals from the drag and drop, girly wirly, namby pamby, wishy washy, can't code for crap types." - Pete O'Hanlon
|
|
|
|
|
yeh i know,
but the problem is that i do not really know in which direction to go
but thanks anyway
LUC halped me(THANKS LUC)to begin somewhere
Have Fun
Never forget it
|
|
|
|