【发布时间】:2012-10-03 19:58:49
【问题描述】:
自定义 UserControl ChartControlShelf 包含一个带有 3 个子控件的 TableLayoutPanel,所有类型均为 Panel。孩子没有事件处理程序。
ShelfContainer 为 UserControl ChartControlShelf 添加所有 EventHandlers:
ChartControlShelf chartControlShelf = new ChartControlShelf();
chartControlShelf.DragOver+=new DragEventHandler(chartControlShelf_DragOver);
chartControlShelf.DragLeave+=new EventHandler(chartControlShelf_DragLeave);
....
private void chartControlShelf_DragOver(object sender, DragEventArgs e) {
ChartControlShelf chartControlShelf = (ChartControlShelf)sender;
if (chartControlShelf.panelControlShelf.PointToClient(Cursor.Position).Y < chartControlShelf.tlpChartControlShelf.Size.Height / 2) {
chartControlShelf.panelInsertTop.BackColor = CustomColorsColors.DragEnter;
chartControlShelf.panelInsertBottom.BackColor = CustomColorsColors.DragLeave;
}
else {
chartControlShelf.panelInsertBottom.BackColor = CustomColorsColors.DragEnter;
chartControlShelf.panelInsertTop.BackColor = CustomColorsColors.DragLeave;
}
}
private void chartControlShelf_DragLeave(object sender, EventArgs e) {
ChartControlShelf chartControlShelf = (ChartControlShelf)sender;
chartControlShelf.panelInsertTop.BackColor = CustomColorsColors.DragLeave;
chartControlShelf.panelInsertBottom.BackColor = CustomColorsColors.DragLeave;
}
为什么*chartControlShelf_DragLeave* 在我的鼠标离开ChartControlShelf UserControl之前触发?
【问题讨论】:
标签: c# winforms events event-handling drag-and-drop