C#Winform面板显示的事件

时间:2016-11-30 01:02:10

标签: c# winforms

面板的事件是否等同于表格事件? 我在一个永远不会关闭的表格中进行了几次面板切换。 但是,我无法找到任何接近表格中使用的事件的事件。 我关闭的是Paint事件。但是我只想在每次显示时更新面板。

2 个答案:

答案 0 :(得分:0)

您可以收听VisibleChanged事件,并仅在visibility = true时执行操作。

https://msdn.microsoft.com/en-us/library/system.windows.forms.panel_events%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

您还可以尝试EnterInvalidated个事件,看看这些事件是否能为您提供所需的结果。

或者如果在离开时禁用面板是一个选项,您可以在工具箱中使用EnabledChanged事件。

答案 1 :(得分:0)

每次显示表单时都不会引发{p> Form.Shown,而是Occurs whenever the form is first displayed。这就是说,没有Panel.Shown事件,并且没有“每当首次显示面板时”引发的事件。

您可以使用Panel.Paint事件模拟此行为,使用标记来跟踪之前是否“显示”过一次。这将使其行为类似于Form.Shown

private bool panel1Painted = false;
private void panel1_Paint(object sender, PaintEventArgs e)
{
    if (!panel1Painted)
    {
        // do your shown stuff here
        panel1Painted = true;
    }
}

为了保持Form.Shown的精神,如果面板重建,您可能需要重置标志。这与显示的不同。