2015-05-09 145 views
2

如何隐藏所有表单,但只显示标签?C# - 隐藏表单,只显示标签?

我希望我的程序只显示标签。没有最小化,最大化按钮。没有标题栏。没有表单背景。只是一个标签。

我尝试使用FormBorderStyle无,并调整它尽可能小。但似乎有一个最小的形式大小。它回到约3厘米宽,1厘米高。

有什么办法可以彻底摆脱除了我的标签之外的所有东西吗? 我还希望能够在按住鼠标时移动此标签。

我没有发现任何代码,所以不幸的是我目前没有任何东西。

任何帮助表示赞赏!

编辑:我不是在谈论this.hide(),我希望表单几乎消失,而只显示标签。

一种方法是将窗体上的不透明度设置为完整。但是这也影响我的标签。任何不使标签透明的方法?

+0

尝试通过WindowsAPI'SetWindowPos'设置窗口大小我相信它被调用。这可以克服最小尺寸限制,如果它在框架中。另外一个提示 - 不要试图让它透明。在WinForms中,你的情况听起来很难做到透明表单。 – SimpleVar

+0

请考虑使用工具提示。您可以通过在Load事件处理程序中放置'this.Bounds = label1.DisplayRectangle;'来修复它。 –

+0

记得选择一个可接受的答案 – Phiter

回答

1

你需要使用的是Region属性。假设你

  • 有一个表格
  • 的形式为
  • 设置上的标签FormBorderStyle ==>无(这是很重要的,否则你将不得不采取的形式的非客户区成帐户 - 报头等等)和ShowInTaskBar ==>假

    private void Form4_Load(object sender, EventArgs e) 
    { 
        Region = new Region(label1.Bounds); 
    } 
    
0

这是,如果你按照我的教程,你会得到什么:

Result

好吧,我相信我明白你想要什么。

待办事项,因为它遵循:

首先,创建FormBorderStyle = none形式,然后你去到窗体的最后一个属性,并设置透明度的关键,我建议你石灰,因为绿色是一个非常强烈的色彩。

一旦你有你的透明度键,你必须改变窗体背景颜色为透明键相同。

如果你运行你的代码,你会注意到它将只是你的标签,但是你不能移动它。

移动它周围是从here采取的代码:

private bool _dragging = false; 
private Point _offset; 
private Point _start_point = new Point(0, 0); 

private void panel1_MouseDown(object sender, MouseEventArgs e) 
{ 
    _dragging = true; // _dragging is your variable flag 
    _start_point = new Point(e.X, e.Y); 
} 

private void panel1_MouseUp(object sender, MouseEventArgs e) 
{ 
    _dragging = false; 
} 

private void panel1_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (_dragging) 
    { 
     Point p = PointToScreen(e.Location); 
     Location = new Point(p.X - this._start_point.X, p.Y - this._start_point.Y); 
    } 
} 

添加到您的表单代码,然后设置正确的行动,您的标签。 您的标签MouseDown应该是panel1_MouseDown等等 如果你所做的一切都正确,你现在应该有一个浮动的可移动文本! :)