繁体   English   中英

当自定义控件达到最终大小时会引发事件吗? (.NET Compact Framework)

[英]Is an event thrown when a custom control gets its final size? (.NET Compact Framework)

我正在使用.Net Compact Framework 2.0 SP2和C#开发Windows Mobile 5.0或更高版本。

我有一个名为PullDownMenu的自定义控件(它继承自System.Windows.Form.Control)。 这是我在WinForm上用来显示它的代码:

PullDownMenu menu = new PullDownMenu();
menu.Location = new Point(0, 0);
menu.Dock = DockStyle.Fill;
this.Controls.Add(menu);

我注意到在此过程中它的大小发生了变化。 我怎么知道它何时达到最终尺寸?

是的,我知道我可以检查OnResize事件,但是此事件被多次调用,我认为它可以降低性能。

当控件完全显示时,会引发事件吗? 或何时将其添加到其父级(在此行: this.Controls.Add(menu); )。

有什么建议吗?

Compact Framework中的某些控件支持可以帮助解决此问题的BeginUpdate和EndUpdate方法。 使用自定义控件,我相信您可能必须实现自己的方法来支持此行为。

若要提高渲染性能,请调用BeginUpdate,更新可能更改其大小的属性,然后调用EndUpdate方法。 这将最小化由调整大小调用的渲染调用。

Control.ParentChanged事件/Control.OnParentChanged方法应处理被添加到控件的通知

我将使用Control.Paint / Control.OnPaint来确定“最终”大小。

紧凑框架是否允许容器使用SuspendLayout和ResumeLayout?

如果您事先挂起,并在ResumeLayout之后检查其大小,则应为预期大小。

若要为自定义控件指定默认大小,请将大小值添加到项目中的xmta文件中。 如果还没有,请右键单击项目并选择添加新项,然后选择designtime属性文件并根据需要命名。

将以下代码添加到您的xmta文件中:

<Class Name="MyControlNamespace.MyControlClassName">
    <DesktopCompatible>true</DesktopCompatible>
    <Property Name ="Size">
      <DefaultValue>
        <Type>System.Drawing.Size, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Type>
        <Value>100, 20</Value>
      </DefaultValue>
    </Property>
</Class>

用您自己的名称空间和类替换,并检查公钥令牌是否正确

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM