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