代码之家  ›  专栏  ›  技术社区  ›  Paul Karam

控制级别上的哪个事件等效于窗体。加载事件?

  •  2
  • Paul Karam  · 技术社区  · 6 年前

    我正在尝试在应用程序中创建多个自定义控件,例如:

    Public Class CbsDataGridView
        Inherits DataGridView
    
        '...
    
        Private Sub CbsDataGridView_Enter(sender As Object, e As EventArgs) Handles MyBase.Enter
            'Code here omitted, not related to the question.
            LoadGrid()
        End Sub
    
        Private Sub LoadGrid()
            'Code here omitted, not related to the question.
        End Sub
    
        '...
    
    End Class
    
    Public Class CbsDateTimePicker
        Inherits DateTimePicker
    
        Private Sub CbsDateTimePicker_Enter(sender As Object, e As EventArgs) Handles MyBase.Enter
            'Code here omitted, not related to the question.
        End Sub
    
    End Class
    

    将这些控件添加到新的空表单时。以下是我面临的两种情况:

    场景1:

    - Drag And Drop CbsDateTimePicker into the form
    - Drag And Drop CbsDataGridView into the form
    - Run Application - Load The New Form
    - CbsDateTimePicker_Enter event fires.
    - CbsDataGridView_Enter event doesn't fire.
    

    场景2:

    - Drag And Drop CbsDataGridView into the form
    - Drag And Drop CbsDateTimePicker into the form
    - Run Application - Load The New Form
    - CbsDataGridView_Enter event fires.
    - CbsDateTimePicker_Enter event doesn't fire.
    

    我想我错过了 Enter 控制事件。

    我要找的是一个像 Form.Load 包含控件的窗体加载时将激发的事件。

    是否有直接的方法来实现此功能?还是我应该寻找另一种方式?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Reza Aghaei    6 年前

    Enter 每当控件使用鼠标或键盘激活时,事件将激发。此外,无论何时通过代码设置窗体的活动控件,都会触发事件。

    控件没有 Load 事件类似于 负载 的事件 Form ,但他们有一个虚拟 OnCreateControl 第一次创建控件时调用。您可以重写它并向该方法添加自定义逻辑,甚至可以引发自定义 负载 事件供您控制。