Just nu i M3-nätverket
Jump to content

Drag ifrån WebBrowser


.M

Recommended Posts

Jag vill använda en WebBrowserkontroll och dra bilder ifrån websidor till andra kontroller i mitt formulär... är detta möjligt?? Noterade att DragDrop eventet inte är tillgängligt på en WebBrowserkontroll. Så jag kanske måste hitta ett annat sätt?

 

Link to comment
Share on other sites

  • 2 weeks later...

Vad du behöver göra är följande:

1. I de kontroller som ska ta emot bilderna sätt AllowDrop till true.

ex: pictureBox1.AllowDrop = true;

 

2. Lägg till en eventhandler på eventet DragEnter på de berörda kontrollerna.

ex:

private void pictureBox1_DragEnter(object sender, DragEventArgs e)
{
// Check that the Copy effect is allowed.
if ((e.AllowedEffect & DragDropEffects.Copy) != 0)
	e.Effect = DragDropEffects.Copy;
}

 

Detta gör att du "meddelar" att du kan ta emot data.

 

3. Lägg till en eventhandler på eventet DragDrop på de berörda kontrollerna.

ex:

private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
// Get the MemoryStream with the DIB (Device-Independent Bitmap).
var dibStream = (Stream)e.Data.GetData(DataFormats.Dib);

// Get a Bitmap from the stream.
var img = BitmapFromDib(dibStream);
if (img != null)
	((PictureBox)sender).Image = img;
}

 

Detta hämtar och visar bilden som droppades på PictureBox kontrollen.

 

Som du kanske märker finns det en metod (BitmapFromDib) som hämtar själva bilden. Den kommer här:

public static Bitmap BitmapFromDib(Stream dib)
{
// Create a new Bitmap File in memory.
var reader = new BinaryReader(dib);

var headerSize = reader.ReadInt32();
var pixelSize = (int)dib.Length - headerSize;
var fileSize = 14 + headerSize + pixelSize;

var bmp = new MemoryStream(fileSize);
var writer = new BinaryWriter(bmp);

// 1. Write Bitmap File Header:			 
writer.Write((byte)'B');
writer.Write((byte)'M');
writer.Write(fileSize);
writer.Write((int)0);
writer.Write(14 + headerSize);

// 2. Copy the DIB 
dib.Position = 0;
var data = new byte[(int)dib.Length];
dib.Read(data, 0, (int)dib.Length);
writer.Write(data, 0, (int)data.Length);

// 3. Create a new Bitmap from our new stream:
bmp.Position = 0;
return new Bitmap(bmp);
}

 

Som du märker behöver du inte bry dig om Drag n' Drop från WebBrowser kontrollen alls. Det är "mottagarna" som behöver veta vad de ska göra om en bild droppas på dem.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...