Wie wollen Sie Setup einen Handler für die dragover / Drag & Drop-Ereignisse in dem MDI-Client-Bereich?

StackOverflow https://stackoverflow.com/questions/305665

Frage

Mit C # und das .NET Framework 2.0. Ich habe eine MDI-Anwendung und müssen handover / Drag & Drop-Ereignisse. Ich habe eine meiner Anwendung dockt Liste auf der linken Seite auf und möchte in der Lage sein, ein Element aus der Liste zu ziehen und es in dem MDI-Client-Bereich fallen und haben die richtigen MDI-Kind für das Element geöffnet. Ich kann nicht scheinen, um herauszufinden, wo die Prozedur zu befestigen. Ich habe versucht, auf das Hauptformular Ereignisse Befestigung und der MdiClient, die Teil der Form ist, aber weder scheint Event-Handler aufgerufen werden, wenn ich sie zu erwarten.

Ich bin auch ein Infragistics Tabbed MDI-Manager, also bin ich nicht sicher, ob das es zu beeinflussen.

War es hilfreich?

Lösung

Ich habe eine Anwendung, die die Infragistics MDI DockManager (nicht Tabbed MDI) implementiert, aber ich denke, sehr ähnlich sind. Es sollte funktionieren, wenn Sie die MDI-Formular Ereignisse behandeln.

  • MDIForm.AllowDrop auf true gesetzt ist?
  • Ist das Objekt Sie versuchen serializable ziehen?
  • Versuchen Sie das Ereignis Dragenter statt Over

Als letzter Ausweg. Wenn alles andere fehlschlägt, versuchen Infragistics Support wenden

Andere Tipps

Dieser Code funktioniert für mich. Es öffnet sich ein neues MDI Kind auf einen Text auf übergeordnete MDI-Form fallen.

...
using System.Linq;
...

public partial class Form1 : Form
{
    MdiClient mdi_client;
    public Form1()
    {
        InitializeComponent();
        mdi_client = this.Controls.OfType<MdiClient>().FirstOrDefault();
        mdi_client.AllowDrop = true;
        mdi_client.DragEnter += Form1_DragEnter;
        mdi_client.DragDrop += Form1_DragDrop;
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
        myForm m = new myForm();
        m.Text = (string)e.Data.GetData(typeof(string));
        m.MdiParent = this;
        m.Show();
        m.Location = mdi_client.PointToClient(new Point(e.X, e.Y));
    }

    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.All;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top