3

我是一个没有经验的程序员,对 windows 编程完全陌生。

我正在编写一个我一直想要的小程序。它是使用 .net 框架使用 C# 编写的。至少这就是我认为我正在做的事情。所有关于框架和 .net、windows 窗体和 win32 api 的讨论都让我非常困惑.. :(

反正我有简单的 Form 对象。

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

现在如何删除表单上除一侧之外的所有边框?如,侧边框应该去,但顶部边框应该保留

FormBorderStyle 对此没有任何帮助

另外,你们自己如何不问就解决这些问题?看看别人的代码?读一本书?任何特定的网站?我已经用谷歌搜索了,但它没有任何结果。

4

3 回答 3

1

吉日,

不幸的是,这是不可能的——不过,您可以删除整个边框,然后在表单上绘制自己的边框,并使用 OnMouseDown、OnMouseUp 和 OnMouseMove 进行自己的拖动...

为了自己解决这样的问题,我会研究各种不同的口头表达问题的方式(例如“无边框形式”、“winform 上的自定义边框”等),并花一些时间在谷歌上搜索它。正如我的老板明智地说的那样,生产力并不总是与您削减了多少代码有关,还与您能学到什么有关。

编辑:正如流行的说法,“谷歌无所不知”——很可能,如果你花一点时间在谷歌上搜索,你仍然找不到任何东西,那么它可能还没有解决,或者它非常非常罕见。另一种方法是投资一些好书,例如 Windows 窗体编程(或者甚至只是 Windows 编程 - 了解 Windows 的底层机制非常有用,而类似的东西可以帮助您成为一名出色的开发人员。A优秀的程序员擅长编码,但优秀的开发人员擅长实际构建有用的软件。:)

于 2009-09-10T23:34:53.883 回答
1

我假设您已经尝试过 FormBorderStyle.FixedSingle?这将显示一个仅在顶部带有边框的表单。无论如何,如果不是这种情况,您可以设置表单区域。

就像是...

public static void HideBorders(Form form)
{
    矩形 newRegion = form.Bounds;
    矩形 formArea = form.Bounds;
    矩形客户端区域 = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = 新区域(新区域);
}

至于你怎么知道该怎么做?你提到的所有东西,帮助文件,网络论坛,书籍。最重要的是练习,练习,练习。你做的事情越多,你就应该变得更好。

于 2009-09-11T00:01:08.577 回答
0

我认为实际上不可能完全按照您的描述进行,因为.NET Framework 只是将您的窗体边框和标题栏的绘制委托给 Windows 本身,对于您描述的 AFAIK 没有任何选择.

相反,我要做的是使用FormBorderStyle.None然后手动绘制您想要的任何窗口装饰(标题栏、边框)。

谷歌搜索“无边框形式 C#”将这些网站列为前三名:

于 2009-09-10T23:36:59.230 回答