我有一个表格上的一些控制,以及我有他们锚定到窗体的左,右,以确保它们生长并与形式收缩。我的形式也设置为自动增长,以适应某些标签可能获得长串收缩。当这些标签让他们的长字符串删除,我希望我的形式回到宽度它是在之前。说这是固定在左右我的窗体上的控件似乎是预防本。我可以让它工作,我打算?

有帮助吗?

解决方案

下面是一个不需要你写任何调整特定代码的方式......但它假定所有的按钮都在底部。

步骤1.设置的最小尺寸为对话框。

步骤2.创建窗体上的一个面板。

步骤3.将你的按钮到面板。

步骤4. Dock中的面板的形式的底部。

步骤5.确保对话框AutoSizeMode设置为ShrinkAndGrow

可以停靠面板任何的左侧,右侧,顶部和底部使用这种技术的边界。并且适当地具有对话框调整大小。

其他提示

我可以建议您不可以做到这一点?我知道你想为你的用户是有帮助的,但有一个窗口随机萎缩(它可能会显得随机给用户)将是混乱的,也许令人沮丧。这可能是更真实的使用新的Windows 7用户界面的功能Aero对齐,即停靠在窗口的左侧,然后它会调整你。

考虑窗口的大小的用户偏好。用户已经告诉你他们想要有多大的事情是,尊重它!

编辑:我还要补充一点,有一个bug,如果你沿着这条路走下去。考虑形式为宽1000个pixes和用户拖动它至(-500,100)的一半显示它自己的监视器上。如果他们打了一个按钮,是可见的(或更糟的是,事情发生的背景!)和形式重新调整到450个像素的窗口刚刚消失了!用户可以看到它在任务栏,但无法得到它,除非他们知道一些花哨的Alt +空格键快捷键。

一个建议是挂钩OnPaint事件。你的控制由这点建成,将有窗体上设置初始位置值。捕捉你想要的一切成表格级别设置专用的对象。

在一个OnStringsRemoved事件,从你的对象读取和设置一切恢复它的方式。修改挂靠真实应触发形式调整大小控制,但它可能是你必须手动设置应有尽有。它也可以是修改形式将缩小控制,而不是周围的其他方法。

另外一个建议是只死您的初始值,并返回到他们的每一次。我个人会选择的OnPaint。它会帮你处理事情喜欢大字体撞了控制大小或任何的框架并用户看到它。

使用System.Drawing.Graphics.MeasureString

    public SizeF MeasureString(string text, Font font, int width);

文本= yourtext; 字体= fontofthelabel; 宽度= maxwidthoflabel;

MeasureString在MSDN

您可以谷歌更

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top