【问题标题】:Winform and WPF Window border [duplicate]Winform和WPF窗口边框[重复]
【发布时间】:2012-12-20 18:35:03
【问题描述】:

可能重复:
Change the style of WinForm border?
Form border size and color

好的,我正在重写这个问题https://stackoverflow.com/questions/13976546/form-border-size-and-color,不知道他们为什么关闭它。我想知道如何更改表单(WINFORM)和 WPF 窗口的边框大小和颜色。我现在使用 Fixed Tool Window 作为边框类型。我还隐藏了按钮(最小化 - 最大化 - 关闭)。但是边框仍然很厚,我不想有windows主题,而是黑色边框。有人知道如何实施吗?我不需要调整大小。

一些注意事项:

  • 该解决方案需要在 Winform 和 WPF 中都有用。
  • 窗口或窗体需要可移动。
  • 我想为我的应用更改 Window OS 边框的颜色和大小。但我知道它使用 Windows API,这可能很难。

如果您不理解,请不要投反对票,直接问吧。

谢谢!

【问题讨论】:

  • 谁投了反对票,为什么?
  • 如果你问的是winforms或WPF,我认为你的问题不清楚。我回答假设是 WPF
  • 是的 LarsTech,因为那个问题是我的,他们关闭了它。
  • 好吧。无论如何,我没有被你否决

标签: c# wpf winforms border


【解决方案1】:

.FormBorderStyle = None 应该这样做。

【讨论】:

  • 我想要一个细边框,而不是没有边框。
  • 那你得自己做。
  • 没有办法用至少我想要的颜色来绘制非客户区(边框)吗?
  • 当然,自己处理 WM_NCPAINT 消息
【解决方案2】:

你可能想要这样的东西吗?您需要删除所有“Windows 样式”,然后使用例如Border 元素作为窗口的容器对其进行自定义。希望这会有所帮助。

<Window x:Class="YourNamespace.YourWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Width="800"
        Height="600"       
        WindowStartupLocation="CenterScreen"
        WindowStyle="None"
        Background="Transparent"
        ShowInTaskbar="True"
        AllowsTransparency="True">
    <Border CornerRadius="5"
            BorderBrush="#FFAAAAAA"
            BorderThickness="1">
        <Border.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#DD000000" Offset="1"/>
                <GradientStop Color="#DD333333" Offset="0.50"/>
                <GradientStop Color="#DD393939" Offset="0.49"/>
                <GradientStop Color="#DD666666"/>
            </LinearGradientBrush>
        </Border.Background>
        <Grid>
            <TextBlock Foreground="White" FontWeight="Bold" Text="Hello World!" FontSize="16"/>
        </Grid>
    </Border>
</Window>

【讨论】:

  • 感谢回复,我想调整Windows操作系统边框的大小和颜色。您的解决方案在 WPF 中可能很有用,但在 Windows 窗体中却没有。另外,我需要能够在屏幕上移动窗口。
  • 这就是我在其他评论中所说的。那么为什么用 WPF 标记这个问题呢?
  • 我需要一个适用于 Winforms 和 WPF 的解决方案。像这样添加边框,在 winforms 中是不可能的。
  • 在 WinForms 中做这件事并不简单,因为 OS.介于两者之间...查看此答案stackoverflow.com/questions/2613418/…
  • 是的,我以前读过这个问题。但这不是我需要的。我想更改边框的颜色和大小。正如我所说,它在 WPF 中很容易做到,但在 Winforms 中则不然。我还检查了那个 codeplex 应用程序,但不喜欢它。
【解决方案3】:

对于 WinForms 和 WPF 都没有好的解决方案。所以你的问题没有真正的答案。

获得所需内容的唯一方法是自己绘制边框并自己处理调整大小/移动。

但是,WPF 和 WinForms 之间的所有这些操作都不同。它们可以在两者中完成。但两者都不一样。所以你的问题没有一个答案。

此外,如果你真的展示了你尝试过的东西,你可能会与人们走得更远(而不是那么多的反对票)。您是否以特定方式遇到了障碍?还是您要求我们为您集思广益?

【讨论】:

  • 嗨蒂姆,我尝试了不同的方法。首先,我使用了适用于 Winform 和 WPF 的解决方案。我隐藏了边框中的所有按钮,所以我只有边框。但我意识到,例如,如果您在 Windows XP 中使用该应用程序,边框将是蓝色的。它看起来不太好。我知道我可以为 WPF 使用很多东西。我在 WPF 中解决它。但在 Winforms 中,我只是不知道如何绘制边框。尝试使用这两种技术获得相同的视觉设计并不容易。这就是为什么我问是否有人知道如何实现它。我不希望有人粘贴我需要的所有代码,而是要
  • 给我一个建议或想法。就是这样。
  • 这在您的原始帖子中会是一个很好的(或至少更好的)解释。这是人们在花时间尝试回答您之前希望看到的事情。
  • 我知道,你是对的。我会在下一篇文章中考虑到这一点。
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-12
  • 2013-05-31
相关资源
最近更新 更多