基本的に、ラベルをテキストボックスにドラッグして、テキストボックスとラベルを使用してドラッグアンドドロップを行っています。テキストボックスとラベルは同じ 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.Drop += 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);
// lbl.MouseUp +=new MouseButtonEventHandler(lbl_MouseUp);
dockPanel1.Children.Add(lbl);
}
ここに 2 つの問題があります。
1st. MessageBox.Show( something ) を表示するために tbox.drop イベントを使用しています。ドラッグ ターゲットがドロップされているときにメッセージ ボックスを表示しますが、機能しません。
ここに私のコードがあります:
private void tbox_Drop(object sender, DragEventArgs e)
{
MessageBox.Show("Are you sure?");
}
次に、ドラッグ ターゲットがドロップされたときに tbox.Text をクリアしたいと考えています。これは、以前に他のドラッグ ターゲットを tbox にドロップした可能性があるためです。だから私は tbox.Text をクリアし、ターゲットを textbox にドラッグするたびにドラッグターゲットをドロップしたいと思います。
それ、どうやったら出来るの?私はこれに使用する必要があるイベントで立ち往生しています。これらのイベントハンドラーから tbox にアクセスするにはどうすればよいですか?