2

我一直在处理这个问题,我不知道如何继续。

我有一个包含 Windows 窗体和 WPF 窗体的项目。

我希望每个表单都像这样显示(它是 WPF 表单):

WPF = http://imageshack.us/photo/my-images/545/wpfk.png/

我实现了这个 windows style = none 和 canresize = yes。我实际上不希望它被调整大小。我只想要表格周围的细边框。但是如果我把 canresize = false 我失去了边界。我还希望能够在屏幕中移动窗口,而不是在那个地方保持静止。

我的winforms也需要所有这些。

Winforms:WINFORM = http://imageshack.us/photo/my-images/836/winforms.png/

我希望你们明白我需要什么。从图形上看,它必须像第一个图像。

4

3 回答 3

1

我不确定它是否有帮助,但您可以为此创建 Forms 集合。(一个)

http://support.microsoft.com/kb/815707/en-us

于 2012-12-05T15:19:05.857 回答
1

您只需将FormBorderStyle设计器中的 WinForms 属性设置为SizableFixedDialogFixed3D。其中之一必然会为您提供所需的行为。

于 2012-12-05T15:19:38.443 回答
1

解决方案:将此代码粘贴到您的表单或基本表单中。

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

感谢 Killercam 的帮助!

WPF窗口的解决方案:

public MainWindow()
    {
        SourceInitialized += Window_SourceInitialized;
        InitializeComponent();
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        this.WindowState = WindowState.Minimized;
    }

    private void Window_SourceInitialized(object sender, EventArgs e)
    {
        WindowInteropHelper wih = new WindowInteropHelper(this);
        int style = GetWindowLong(wih.Handle, GWL_STYLE);
        SetWindowLong(wih.Handle, GWL_STYLE, style & ~WS_SYSMENU);
    }

    private const int GWL_STYLE = -16;
    private const int WS_SYSMENU = 0x00080000;

    [DllImport("user32.dll")]
    private extern static int SetWindowLong(IntPtr hwnd, int index, int value);
    [DllImport("user32.dll")]
    private extern static int GetWindowLong(IntPtr hwnd, int index);
于 2012-12-05T22:07:44.180 回答