我正在使用.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);
)。
有什么建议吗?
答案 0 :(得分:3)
Compact Framework中的某些控件支持BeginUpdate和EndUpdate方法,这些方法可能有助于解决此问题。使用自定义控件,我相信您可能必须实现自己的方法来支持此行为。
要提高渲染性能,请调用BeginUpdate,更新可能更改其大小的属性,然后调用EndUpdate方法。这将最小化调整大小调用的渲染调用。
答案 1 :(得分:1)
Control.ParentChanged事件/ Control.OnParentChanged方法应该处理添加到控件的通知
我会使用Control.Paint / Control.OnPaint来确定'最终'尺寸。
答案 2 :(得分:0)
紧凑框架是否允许容器为SuspendLayout和ResumeLayout?
如果你事先暂停,并在ResumeLayout之后检查它的大小,它应该是它的预期大小。
答案 3 :(得分:0)
要指定自定义控件的默认大小,请将大小值添加到项目中的xmta文件。 如果您还没有,请右键单击项目并选择添加新项目,然后选择设计时属性文件并为其命名。
将以下代码添加到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>
用自己的名称替换名称空间和类,同时检查公钥标记是否正确