2

カスタムUserControlには、すべてタイプの3つの子コントロールChartControlShelfが含まれています。子にはEventHandlerがありません。 TableLayoutPanelPanel

ShelfContainerUserControlのすべてのEventHandlerを追加しますChartControlShelf

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;

    }

マウスがUserControlを離れる前に*chartControlShelf_DragLeave*が起動するのはなぜですか?ChartControlShelf

4

1 に答える 1

4

マウスカーソルは、ポインタのすぐ下に表示されるコントロールに「属します」。奇妙に聞こえますが、カーソルがChartControlShelf内のコントロールの1つに「入る」と、ChartControlSelfも「離れる」ことになります。

于 2012-10-03T20:25:56.340 に答える