【问题标题】:Thinnest possible frame最薄的框架
【发布时间】:2013-11-27 10:46:55
【问题描述】:

我正在使用可视化 C#。我想为我的应用程序提供一个非常薄的框架。

我尝试了FormBorderStyle.None 和FormBorderStyle.FixedSingle,但我的框架中仍然有一些空的未使用空间,我该如何消除这些可用空间?

我已经尝试压缩框架,但它保持不变。

简而言之,我该如何改变:

到:

【问题讨论】:

  • 我假设是 WinForm。学习标记。
  • 看起来像一个按钮。它周围有一个额外的像素,以留出足够的空间将按钮标记为默认接受按钮,由按钮周围的黑框表示。如果您希望它与窗口边框齐平,则必须将其 Location 属性设置为 (-1, -1)。
  • @HansPassant 不,它是一个进度条,将来还会有一个启动/停止按钮。我需要一个可以容纳两者的细条。我对宽度很好,但高度几乎是我实际需要的两倍。
  • 不知道你在说什么。只需更改 Size 属性,它可以是任何东西。在“属性”窗口中键入它,而不是用鼠标移动它。

标签: c# winforms


【解决方案1】:

您可以尝试将 TransparencyKey 属性设置为一种颜色,并将 Background 设置为相同。这样表单本身将是透明的,因此您不会看到按钮旁边的空白区域。

希望这会有所帮助。

(我还假设它是一个 WinForms 应用程序。)

您可以尝试的另一件事是覆盖窗口的绘制处理程序,如here 所述。代码是VB的,但希望你能管理。

这是c#中的代码:

protected override void OnPaint(PaintEventArgs e)
{
    var r = ClientRectangle;
    // Here you can set the size of the form to any given size
    r.Width = 120;
    r.Height -= 1;
    // Here you draw a one pixel black border
    ControlPaint.DrawBorder(e.Graphics, r, Color.Black, ButtonBorderStyle.Solid);
}

【讨论】:

  • 首先感谢您的宝贵时间。使用上面的代码,我可以很好地更改/控制表单的宽度,但它对它的高度没有影响。 image 我也尝试将背景(背景颜色)更改为 Web->transparent 但我收到此错误:控件不支持透明背景颜色。我做错了吗?
  • 好吧,您可能选择了唯一不起作用的颜色...将其更改为某种特定颜色,例如红色,并将表单的 TransparencyKey 更改为相同的颜色(红色)。这样它将是透明的。但是这个解决方案有一些缺点:表单仍然存在,这意味着当你点击它时,你实际上是点击了表单,而不是——可见的——它下面的东西。与上面的代码相关:对我来说 - 如果您将行更改为 'r.Height = 30' 那么它将是 30 像素高。我将 FormBorderStyle 设置为“无”。
【解决方案2】:

您可以使用 FormBorderStyle.FixedToolWindow,它会接受小尺寸,但会有标题。

【讨论】:

    【解决方案3】:

    经过多次打击和试验:Overcome OS Imposed Windows Form Minimum Size Limit 做得非常好。 感谢大家宝贵的时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2015-01-11
      相关资源
      最近更新 更多