C#.net框架 - 仅在表单的一侧边框

时间:2009-09-10 23:22:16

标签: c# .net forms border

我是一名经验不足的程序员,对于Windows编程来说是全新的。

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

无论如何我有简单的Form对象。

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

现在除了一边如何删除表格上的所有边框?如同,边框应该去,但顶部边框应该保持

FormBorderStyle没有此内容的任何内容

另外,你们如何自己解决这些问题?看别人的代码?读一本书?任何特定的网站? 我用谷歌搜索,但它没有发现任何东西。

3 个答案:

答案 0 :(得分:1)

Gidday,

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

为了自己解决这个问题,我会看一下口头表达问题的各种不同方式(例如“无边界形式”,“winform上的自定义边界”等)并花一点时间用谷歌搜索它。正如我的老板明智地说的那样,生产力并不总是关于你削减了多少代码,而是关于你可以学到什么。

编辑:正如流行的表达方式所说的那样,“谷歌知道所有” - 很有可能,如果你花了一些时间谷歌搜索,你仍然找不到任何东西,那么它可能还没有解决,或者它是非常的极少。另一种方法是投资一些好书,例如Windows窗体编程(甚至只是Windows编程 - 了解Windows的底层机制非常有用,这样的事情有助于将您变成一个优秀的开发人员。一个优秀的程序员擅长编码,但是很棒的开发人员擅长构建有用的软件。:)

答案 1 :(得分:1)

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

像...一样的东西。

public static void HideBorders(Form form)
{
    Rectangle newRegion = form.Bounds;
    Rectangle formArea = form.Bounds;
    Rectangle clientArea = 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 = new Region(newRegion);
}

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

答案 2 :(得分:0)

我认为实际上不可能完全按照您的描述进行操作,因为.NET Framework只是将Form的边框和标题栏的绘图委托给Windows本身,而Windows本身没有任何选项。你描述了AFAIK。

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

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