2013-07-26 58 views
0

我是編程新手,我試圖做一個拖放操作,現在可以拖放,但拖放的自定義光標很難看,我該如何拖動作爲光標拖動的元素?我在網上搜索,發現一些關於裝飾者,但我甚至不懂代碼。有沒有簡單或簡單的方法來做到這一點?WPF C#拖放拖動元素作爲光標

我這裏有這樣的代碼,我可以拖放(我動態創建文本框和標籤在for循環中,我檢索文本並追加它從一個數據庫標記:

   TextBox tbox = new TextBox(); 
       tbox.Width = 250; 
       tbox.Height = 50; 
       tbox.AllowDrop = true; 
       tbox.FontSize = 24; 
       tbox.BorderThickness = new Thickness(2); 
       tbox.BorderBrush = Brushes.BlanchedAlmond;  
       tbox.PreviewDrop += new DragEventHandler(tbox_Drop); 

       if (lstQuestion[i].Answer.Trim().Length > 0) 
       { 

        wrapPanel2.Children.Add(tbox); 
        answers.Add(lbl.Content.ToString()); 
        MatchWords.Add(question.Content.ToString(), lbl.Content.ToString()); 

       } 

Dictionary<string, string> shuffled = Shuffle(MatchWords); 
     foreach (KeyValuePair<string, string> s in shuffled) 
     { 
      Label lbl = new Label(); 
      lbl.Content = s.Value; 
      lbl.Width = 100; 
      lbl.Height = 50; 
      lbl.FontSize = 24;    
      lbl.DragEnter += new DragEventHandler(lbl_DragEnter); 
      // lbl.MouseMove += new MouseEventHandler(lbl_MouseMove); 
      lbl.MouseDown +=new MouseButtonEventHandler(lbl_MouseDown); 

      dockPanel1.Children.Add(lbl); 
     } 

我拖標籤(拖動目標)到文本框(放置目標),我應該使用哪個事件以及如何編寫事件以將拖動光標設置爲我正在拖動的標籤?

以下是我使用atm的事件:

 private void tbox_Drop(object sender, DragEventArgs e) 
    { 
     MessageBox.Show("Are you sure ? Wrong don't blame me "); 
     (sender as TextBox).Text = string.Empty; 

    } 

    private void lbl_DragEnter(object sender, DragEventArgs e) 
    { 
     if (sender == e.Source) 
     { 
      e.Effects = DragDropEffects.None; 
     } 
    } 

任何解決方案或幫助表示讚賞,我見過裝飾者,它的方式太複雜了,我不明白要實現它。尋找一個簡單而簡單的方法來做到這一點。

+0

裝飾器是你怎麼做你想做的事。如果你想做你想做的事,我建議你指導並瞭解裝飾者。這並不困難。將裝飾者想象成你可以在其上繪製東西的控制層。谷歌「DragDropAdorner」,並從那裏去。 –

回答