【问题标题】:Is there an event that fires after load for a user control?是否存在在加载用户控件后触发的事件?
【发布时间】:2014-06-20 00:46:57
【问题描述】:

我在 C# winforms 中使用用户控件,我希望在加载事件之后和显示控件之后执行一些代码。如果不存在这样的事件,是否有可能制作一个?

【问题讨论】:

  • 你能更好地解释你想要完成什么吗?为什么必须在“控件已显示”之后运行? (这是否意味着在创建控件之后或在用户看到控件之后?)这段代码有什么作用?如果没有更多信息,很难知道什么活动可以满足您的需求。

标签: c# winforms


【解决方案1】:

您可以使用来自this list. 的事件之一,OnPaint 最有可能是候选者。

表单事件:

构造器
加载
布局
已激活
油漆
结束
关闭
停用
处理

对于控件:

输入
有焦点
离开
验证
已验证
失焦

如果你找不到适合你的,这篇文章explains how to construct and fire event.

【讨论】:

    【解决方案2】:
    1. 在用户控件中创建公共方法
    2. 调用父win-form Shown Event上的方法

    这将调用你想运行一次的代码。

    您也可以使用用户控制的绘画事件,但这会很昂贵。因为每次重绘控件时你的代码都会执行。

    所以最好使用一个标志来决定是否运行代码

      private bool _run =true;
    
      private void Control_Paint(object sender, PaintEventArgs e)
            {
                if(!_run) return;
                //call the code you need to run
               _run = false;
            }
    

    【讨论】:

    • 不关心父母必须调用用户控件才能使其工作,但标记第一次调用 Paint 的第二个想法看起来是有效的。
    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2010-10-15
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多