C# - 如何隐藏窗体,仅显示标签?

3
如何隐藏整个窗体,只显示标签?
我想让我的程序只显示一个标签。没有最小化、最大化按钮。没有标题栏。没有表单背景。只有一个标签。
我尝试使用FormBorderStyle设置为none,并将其调整为尽可能小的尺寸。但是似乎存在窗体的最小尺寸。它会恢复到约3厘米宽,1厘米高。
有没有完全摆脱除了我的标签之外的所有东西的方法? 我还想能够在按住鼠标时移动此标签。
我找不到相关代码,所以很遗憾我现在没有任何东西。
感谢任何帮助!
编辑:我不是说这个.hide(),我希望窗体几乎消失,只显示标签。
一种方法是在窗体上设置不透明度。但这也会影响我的标签。有没有不使标签透明的方法?

尝试通过WindowsAPI SetWindowPos来设置窗口大小。我相信这就是它的名称。如果在框架中,这可以克服最小尺寸限制。此外,一个提示-不要试图使其透明。您的情况听起来与WinForms中的透明表单很难完成。 - SimpleVar
请考虑使用工具提示。您可以通过在Load事件处理程序中放置this.Bounds = label1.DisplayRectangle;来修复它。 - Hans Passant
请记住选择一个被接受的答案。 - Phiter
3个回答

2
你需要使用区域属性。假设你...
  • have a form
  • have a label on the form
  • set FormBorderStyle ==> None (this is important, otherwise you'll have to take form's non-client area into account - header, etc.) and ShowInTaskBar ==> false

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

0

如果您按照我的教程操作,您将会得到以下内容:

Result

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

按照以下步骤进行:

首先,创建一个表单并将 FormBorderStyle = none,然后转到表单的最后一个属性并设置透明键,我建议使用青柠色,因为绿色是一种非常强烈的颜色。

一旦你有了透明键,你需要将表单背景颜色更改为与透明键相同的颜色。

如果你运行代码,你会注意到只有标签,但你还不能移动它... 现在。

移动标签的代码取自 这里

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等等。 如果您做得没问题,现在应该有一个可移动的浮动文本! :)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接