これは奇妙な行動のケースです。
イベントを呼び出してTreeView_Drag_Drop
います (イベントの種類は関係ないと思いますが、なんでも構いません)。MessageBox
イベント内で、3 連続で呼び出します。このような :
MessageBox.Show("A");
MessageBox.Show("B");
MessageBox.Show("C");
出力は と にB
なりC
ます。ブレークポイントを設定するMessageBox.Show("A");
と、そこで停止しますが、MessageBox
.
これのコードを置き換えると:
Console.WriteLine("A");
MessageBox.Show("B");
MessageBox.Show("C");
出力はこれA (in the console)
になります、、、。B
C
私の最後の試みは、ダミーMessageBox
を作成して、コンパイラーが最初に見たボックスのみを除外するかどうかを確認することです。だから私はこれのために私のコードを置き換えました:
MessageBox.Show("Kill this box");
MessageBox.Show("A");
MessageBox.Show("B");
MessageBox.Show("C");
出力はA
, B
,C
です。
これ以上のコードなしで簡単な説明はありますか? (とにかく、それがイベントの唯一のコードです) この動作を説明できないからです。
別のテストで更新する
に入れてみましたforeach loop
。
foreach ( // logic )
{
MessageBox.Show("A");
MessageBox.Show("B");
MessageBox.Show("C");
}
私の最初の反復では、出力は , になりB
ますC
。
しかし、他のすべての反復では、出力はA
, B
, になりC
ます。すでに除外されているMessageBox
ように、通過しても問題ありません。
コードの更新
このコードは、プロトタイプで完全に機能します。しかし、まったく同じコードが私のプログラムにはありません。
多言語サポートなどの場合、フォームはリフレクションによって呼び出されることに注意してください。(それはまったく関係ないと思いますが、とにかく)。
private void Form1_Load(object sender, EventArgs e)
{
treeView1.Nodes.Add("Test");
this.treeView1.ItemDrag += new ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView2.ItemDrag += new ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView1.DragEnter += new DragEventHandler(this.treeView_DragEnter);
this.treeView2.DragEnter += new DragEventHandler(this.treeView_DragEnter);
this.treeView1.DragDrop += new DragEventHandler(this.treeView_DragDrop);
this.treeView2.DragDrop += new DragEventHandler(this.treeView_DragDrop);
}
private void treeView_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView_ItemDrag(object sender,
System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
MessageBox.Show("A");
MessageBox.Show("B");
MessageBox.Show("C");
}
私はそれが機能することを知っています。問題は、それが私のプログラムになく、まったく同じコードであることです。私のソリューションで動作が異なる可能性のある理由を探していますが、何も見つかりません。