C# Winform和WPF窗体/窗口边框

C# Winform和WPF窗体/窗口边框,c#,wpf,winforms,forms,border,C#,Wpf,Winforms,Forms,Border,我一直在处理这个问题,我不知道如何处理 我有一个同时使用windows窗体和WPF窗体的项目 我希望每个表单都像这样显示(它是WPF表单): WPF= 我实现了这个windows样式=无和canresize=是。我其实不希望它被调整大小。我只想要表单周围的薄边框。但是如果我把canresize=false,我就失去了边界。我还希望能够在屏幕上移动窗口,而不是在那个地方静止 我的winforms也需要这些 Winforms: WINFORM= 我希望你们明白我需要什么。从图形上看,它必须像第一个图

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

我有一个同时使用windows窗体和WPF窗体的项目

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

WPF=

我实现了这个windows样式=无和canresize=是。我其实不希望它被调整大小。我只想要表单周围的薄边框。但是如果我把canresize=false,我就失去了边界。我还希望能够在屏幕上移动窗口,而不是在那个地方静止

我的winforms也需要这些

Winforms: WINFORM=


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

我不确定它是否有用,但您可以为此创建表单集合。(a)


您只需将设计器中的WinForms
FormBorderStyle
属性设置为
Sizeable
FixedDialog
Fixed3D
等。其中一个属性一定会提供您所需的行为。

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

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);

我不确定你是否理解这个问题。我只希望表单有一个像第一张图片一样的薄边框,并且能够移动表单,而不需要beign sizeable。没有一种FormBorderStyle适合我的需要。
FixedDialog
是您唯一的选择。除非您想承担编写自己的WInForms容器的大量工作!?有没有办法隐藏关闭按钮?我也发现了这个。。但我不知道你是否可以隐藏按钮。我得看看,酷。您不能隐藏它,但可以使用禁用它。事实上,检查此答案您可以将其连同“最小”和“最大”按钮一起删除…如果
e.OriginalSource
是窗口边框,您可以
e.Cancel
鼠标向下
事件吗?这可以在我的WPF窗口中工作,其中sizable=true使边框可见,但是在winforms中我没有那个属性。啊,我现在对你的问题有点了解了。不幸的是,我对Winforms了解不多,因为我更喜欢尽可能使用WPF,所以在这方面我帮不了你