Control.AllowDrop-Eigenschaft
Ruft einen Wert ab, der angibt, ob das Steuerelement Daten annehmen kann, die vom Benutzer darauf gezogen wurden, oder legt diesen fest.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Public Overridable Property AllowDrop As Boolean
'Usage
Dim instance As Control
Dim value As Boolean
value = instance.AllowDrop
instance.AllowDrop = value
public virtual bool AllowDrop { get; set; }
public:
virtual property bool AllowDrop {
bool get ();
void set (bool value);
}
/** @property */
public boolean get_AllowDrop ()
/** @property */
public void set_AllowDrop (boolean value)
public function get AllowDrop () : boolean
public function set AllowDrop (value : boolean)
Eigenschaftenwert
true, wenn Drag & Drop-Vorgänge für das Steuerelement zulässig sind, andernfalls false. Der Standardwert ist false.
Hinweise
Hinweise für Erben Verwenden Sie beim Überschreiben der AllowDrop-Eigenschaft in einer abgeleiteten Klasse die AllowDrop-Eigenschaft der Basisklasse, um die Basisimplementierung zu erweitern. Andernfalls müssen Sie die gesamte Implementierung bereitstellen. Sie müssen nicht sowohl den get-Accessor als auch den set-Accessor der AllowDrop-Eigenschaft überschreiben. Sie können ggf. auch nur einen Accessor überschreiben.
Beispiel
Im folgenden Codebeispiel kann der Benutzer ein Bild oder eine Bilddatei in das Formular ziehen und an der Stelle ablegen, an der das Element angezeigt werden soll. Die OnPaint-Methode wird überschrieben, sodass das Bild jedes Mal neu gezeichnet wird, wenn das Formular gezeichnet wird. Andernfalls würde das Bild nur bis zum nächsten Neuzeichnen beibehalten werden. Die DragEnter-Ereignisbehandlungsmethode bestimmt den Datentyp, der in das Formular gezogen wird, und reagiert entsprechend. Die DragDrop-Ereignisbehandlungsmethode zeigt das Bild im Formular an, wenn aus den Daten ein Image erstellt werden kann. Die Werte DragEventArgs.X und DragEventArgs.Y sind Bildschirmkoordinaten. Daher wird im Beispiel die PointToClient-Methode verwendet, um sie in Clientkoordinaten umzuwandeln.
Private picture As Image
Private pictureLocation As Point
Public Sub New()
' Enable drag-and-drop operations.
Me.AllowDrop = True
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
' If there is an image and it has a location,
' paint it when the Form is repainted.
If Not (Me.picture Is Nothing) And _
Not (Me.pictureLocation.Equals(Point.Empty)) Then
e.Graphics.DrawImage(Me.picture, Me.pictureLocation)
End If
End Sub
Private Sub Form1_DragDrop(ByVal sender As Object, _
ByVal e As DragEventArgs) Handles MyBase.DragDrop
' Handle FileDrop data.
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' Assign the file names to a string array, in
' case the user has selected multiple files.
Dim files As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
Try
' Assign the first image to the 'picture' variable.
Me.picture = Image.FromFile(files(0))
' Set the picture location equal to the drop point.
Me.pictureLocation = Me.PointToClient(New Point(e.X, e.Y))
Catch ex As Exception
MessageBox.Show(ex.Message)
Return
End Try
End If
' Handle Bitmap data.
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
Try
' Create an Image and assign it to the picture variable.
Me.picture = CType(e.Data.GetData(DataFormats.Bitmap), Image)
' Set the picture location equal to the drop point.
Me.pictureLocation = Me.PointToClient(New Point(e.X, e.Y))
Catch ex As Exception
MessageBox.Show(ex.Message)
Return
End Try
End If
' Force the form to be redrawn with the image.
Me.Invalidate()
End Sub
Private Sub Form1_DragEnter(ByVal sender As Object, _
ByVal e As DragEventArgs) Handles MyBase.DragEnter
' If the data is a file or a bitmap, display the copy cursor.
If e.Data.GetDataPresent(DataFormats.Bitmap) _
Or e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
private Image picture;
private Point pictureLocation;
public Form1()
{
// Enable drag-and-drop operations and
// add handlers for DragEnter and DragDrop.
this.AllowDrop = true;
this.DragDrop += new DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new DragEventHandler(this.Form1_DragEnter);
}
protected override void OnPaint(PaintEventArgs e)
{
// If there is an image and it has a location,
// paint it when the Form is repainted.
base.OnPaint(e);
if(this.picture != null && this.pictureLocation != Point.Empty)
{
e.Graphics.DrawImage(this.picture, this.pictureLocation);
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
// Handle FileDrop data.
if(e.Data.GetDataPresent(DataFormats.FileDrop) )
{
// Assign the file names to a string array, in
// case the user has selected multiple files.
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
try
{
// Assign the first image to the picture variable.
this.picture = Image.FromFile(files[0]);
// Set the picture location equal to the drop point.
this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
// Handle Bitmap data.
if(e.Data.GetDataPresent(DataFormats.Bitmap) )
{
try
{
// Create an Image and assign it to the picture variable.
this.picture = (Image)e.Data.GetData(DataFormats.Bitmap);
// Set the picture location equal to the drop point.
this.pictureLocation = this.PointToClient(new Point(e.X, e.Y) );
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
// Force the form to be redrawn with the image.
this.Invalidate();
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
// If the data is a file or a bitmap, display the copy cursor.
if (e.Data.GetDataPresent(DataFormats.Bitmap) ||
e.Data.GetDataPresent(DataFormats.FileDrop) )
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private:
Image^ picture;
Point pictureLocation;
public:
Form1()
{
// Enable drag-and-drop operations and
// add handlers for DragEnter and DragDrop.
this->AllowDrop = true;
this->DragDrop += gcnew DragEventHandler( this, &Form1::Form1_DragDrop );
this->DragEnter += gcnew DragEventHandler( this, &Form1::Form1_DragEnter );
}
protected:
virtual void OnPaint( PaintEventArgs^ e ) override
{
// If there is an image and it has a location,
// paint it when the Form is repainted.
Form::OnPaint( e );
if ( this->picture != nullptr && this->pictureLocation != Point::Empty )
{
e->Graphics->DrawImage( this->picture, this->pictureLocation );
}
}
private:
void Form1_DragDrop( Object^ /*sender*/, DragEventArgs^ e )
{
// Handle FileDrop data.
if ( e->Data->GetDataPresent( DataFormats::FileDrop ) )
{
// Assign the file names to a String* array, in
// case the user has selected multiple files.
array<String^>^files = (array<String^>^)e->Data->GetData( DataFormats::FileDrop );
try
{
// Assign the first image to the picture variable.
this->picture = Image::FromFile( files[ 0 ] );
// Set the picture location equal to the drop point.
this->pictureLocation = this->PointToClient( Point(e->X,e->Y) );
}
catch ( Exception^ ex )
{
MessageBox::Show( ex->Message );
return;
}
}
// Handle Bitmap data.
if ( e->Data->GetDataPresent( DataFormats::Bitmap ) )
{
try
{
// Create an Image and assign it to the picture variable.
this->picture = dynamic_cast<Image^>(e->Data->GetData( DataFormats::Bitmap ));
// Set the picture location equal to the drop point.
this->pictureLocation = this->PointToClient( Point(e->X,e->Y) );
}
catch ( Exception^ ex )
{
MessageBox::Show( ex->Message );
return;
}
}
// Force the form to be redrawn with the image.
this->Invalidate();
}
void Form1_DragEnter( Object^ /*sender*/, DragEventArgs^ e )
{
// If the data is a file or a bitmap, display the copy cursor.
if ( e->Data->GetDataPresent( DataFormats::Bitmap ) || e->Data->GetDataPresent( DataFormats::FileDrop ) )
{
e->Effect = DragDropEffects::Copy;
}
else
{
e->Effect = DragDropEffects::None;
}
}
private Image picture;
private Point pictureLocation;
public Form1()
{
// Enable drag-and-drop operations and
// add handlers for DragEnter and DragDrop.
this.set_AllowDrop(true);
this.add_DragDrop(new DragEventHandler(this.Form1_DragDrop));
this.add_DragEnter(new DragEventHandler(this.Form1_DragEnter));
} //Form1
protected void OnPaint(PaintEventArgs e)
{
// If there is an image and it has a location,
// paint it when the Form is repainted.
super.OnPaint(e);
if (this.picture != null && !this.pictureLocation.Equals(Point.Empty)) {
e.get_Graphics().DrawImage(this.picture, this.pictureLocation);
}
} //OnPaint
private void Form1_DragDrop(Object sender, DragEventArgs e)
{
// Handle FileDrop data.
if (e.get_Data().GetDataPresent(DataFormats.FileDrop)) {
// Assign the file names to a string array, in
// case the user has selected multiple files.
String files[] = (String[])(e.get_Data().GetData(
DataFormats.FileDrop));
try {
// Assign the first image to the picture variable.
this.picture = Image.FromFile(files.toString());
// Set the picture location equal to the drop point.
this.pictureLocation = this.PointToClient(new Point(e.get_X(),
e.get_Y()));
}
catch (System.Exception ex) {
MessageBox.Show(ex.get_Message());
return;
}
}
// Handle Bitmap data.
if (e.get_Data().GetDataPresent(DataFormats.Bitmap)) {
try {
// Create an Image and assign it to the picture variable.
this.picture = (Image)e.get_Data().GetData(DataFormats.Bitmap);
// Set the picture location equal to the drop point.
this.pictureLocation = this.PointToClient(new Point(e.get_X(),
e.get_Y()));
}
catch (System.Exception ex) {
MessageBox.Show(ex.get_Message());
return;
}
}
// Force the form to be redrawn with the image.
this.Invalidate();
} //Form1_DragDrop
private void Form1_DragEnter(Object sender, DragEventArgs e)
{
// If the data is a file or a bitmap, display the copy cursor.
if (e.get_Data().GetDataPresent(DataFormats.Bitmap) || e.get_Data().
GetDataPresent(DataFormats.FileDrop)) {
e.set_Effect(DragDropEffects.Copy);
}
else {
e.set_Effect(DragDropEffects.None);
}
} //Form1_DragEnter
.NET Framework-Sicherheit
- UIPermission für uneingeschränkten Zugriff auf die Zwischenablage, um diese Eigenschaft auf true festzulegen. Zugeordnete Enumeration: der AllClipboard-Wert von System.Security.Permissions.UIPermissionClipboard.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
Control-Klasse
Control-Member
System.Windows.Forms-Namespace
DragEventArgs
DragOver
DragDrop
DragEnter
DragLeave
DoDragDrop