C#,FormBorderStyle:无还原问题

时间:2012-09-07 20:24:11

标签: c# windows winforms minimize

我有一个使用Form并将FormBorderStyle设置为“None”的应用。

问题在于,如果用户点击“显示桌面”按钮(有效地最小化所有打开的窗口),然后从任务栏恢复其中一个表单,则将恢复所有无边框表单。

注意:如果在单击“显示桌面”按钮之前显式最小化了窗体(即WindowState = FormWindowState.Minimized),则会导致该特定窗体的预期行为。

另请注意,对于常规表单甚至没有边框的WPF窗口,情况并非如此。

Form.Designer.cs:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Form.cs:

private void MinimizeButton_Click(object sender, EventArgs e)
{
    // If minimized explicitly, form behaves appropriately
    WindowState = FormWindowState.Minimized;
}

关于为什么会出现这种情况/如何解决问题的想法?

1 个答案:

答案 0 :(得分:2)

我认为这只是默认行为,因为无边框形式不应该被最小化。

查看this帖子。希望它可以帮助您更改此默认行为。

从帖子(添加到表单):

const int WS_MINIMIZEBOX = 0x20000;
const int CS_DBLCLKS = 0x8;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style |= WS_MINIMIZEBOX;
        cp.ClassStyle |= CS_DBLCLKS;
        return cp;
    }
}