C#.NETでイベント処理を使用するのが初めてで、実験している簡単なコードの背後にある動作を理解しようとしています。私はもっと複雑な例を使って作業していますが、例を単純化すれば、もっと集中的な答えが得られることを期待しています。単純なドラッグ&ドロップイベント処理の問題
私は、値で初期化されたListBoxとウィンドウ内のパネルを持つメインウィンドウを定義する次のコードを持っています。 ListBox Itemsをドラッグしてパネルにドロップする作業をしています。パネルがDragDropイベントを読み込んでいることを示すために、単に背景色を変更しています。
私の問題は、値をドロップするとバックグラウンドカラーが変わらないため、DragDropが機能しないということです。私はこれが少し誇張されていることを知っていますが、私はなぜそれが機能していないのか理解しようとしています。
ここに私が使用している次のコードがあります。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Allow Panel to accept dropped values
this.panel1.AllowDrop = true;
//Initialize ListBox with sample values
listBox1.Items.Add("First Name");
listBox1.Items.Add("Last Name");
listBox1.Items.Add("Phone");
//Setup DragDrop Event Handler - is this correct, or even needed?
this.panel1.DragDrop += new DragEventHandler(panel1_DragDrop);
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
ListBox box = (ListBox)sender;
String selectedValue = box.Text;
DoDragDrop(selectedValue.ToString(), DragDropEffects.Copy);
}
private void panel1_DragDrop(object sender, DragEventArgs e)
{
//Change Background color to signify value has been dropped
((Panel)sender).BackColor = Color.Black;
}
}
これは単純すぎる例です。私が間違っていることが分かったら、教えてください。
EDIT私が混乱している理由の例を示すために、DragOverイベントが発生したときに、ドラッグされたListBox Itemテキストをテキストボックスに配置するようにこの例を変更していますが、テキストボックスに値をドロップしたときと同じこと、私はそれを動作させることができませんでした。
リストボックスの項目をドラッグアンドドロップするといいですか? – DevDemon
私のアプリケーションではうまくいっていますが、この例では、パネル上にMouseupをしたときにDragDropイベントが動作していることを知りたいだけです。 – TheJediCowboy