Zdravím, mám takový malý dotaz. Tvořím jednoduchou aplikaci, do které lze stylem drag&drop přesouvat soubory. Používám proto event Drop. Problém nastane tehdy, když přesunu soubory (např. z Plochy) a v obsluze události s nimi dělám časově náročnější operace -> při průběhu kódu metody je Plocha počítače "zaseknutá", neboť stále nebyla dokončena operace Drag&Drop. Rád bych se Vás proto zeptal, jak event ručně ukončit, nicméně ale chci, aby kód pokračoval v jiné metodě dále. Tj. Chci aby uživatel přetáhl soubory a ihned po přetažení je program začal zpracovávat a Plocha byla uvolněna. (Plocha byla vedena jako příklad, jedná se obecně o soubory odkudkoliv). Zkoušel jsem to například řešit pomocí notifikačního rozhraní: Při otevření MessageBox bych chtěl, aby byla zdrojová složka již uvolněna. V ukázkovém zdrojovém kódu tomu tak není.
namespace WpfApplication1
{
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
this.AllowDrop = true;
InitializeComponent();
PropertyChanged += new PropertyChangedEventHandler(OnAppDragAndDropEvent);
}
private void OnAppDragAndDropEvent(object sender, PropertyChangedEventArgs args)
{
MessageBox.Show("Moje operace ...");
}
private void Window_Drop(object sender, DragEventArgs e)
{
OnPropertyChanged("OnDrop");
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}
Děkuji za každou radu.
|