gpt4 book ai didi

c# - 在不最小化其他窗口的情况下将窗口窗体,窗体置于最前面

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:12 24 4
gpt4 key购买 nike

您好,我是 C# 的新手,也是 Windows 窗体的新手,主要是尝试创建一个潜意识消息传递程序,它会在定时间隔快速显示一条消息,然后再次隐藏。

我设法通过查看其他各种帖子创建了另一个表单,该表单将弹出然后使用

快速隐藏
msgObject.Activate();

将表单带到前面。然而,它阻止我在工作时打字,我基本上想知道是否有可能在我所有其他程序的前面出现某种消息或表格,而不会中断我当前的工作或打开或关闭其他窗口和任务(如果有意义)。目前它将表格带到所有内容的前面,但也会阻止我打字等。

我不确定我目前使用表单的方法是否可行,但如果有办法实现结果,我会非常感激地找出答案

谢谢。

这里有更多我的代码需要澄清

 public partial class FormHomePage : Form
{
private bool startSubliminal = false;
msg msgObject = new msg();

List<string> subliminalMessages = new List<string>();
public FormHomePage()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void timer1_Tick(object sender, EventArgs e)
{
if (startSubliminal)
{
msgObject.Show();
msgObject.BringToFront();
msgObject.Activate();
}

}



private void button1_Click(object sender, EventArgs e)
{

subliminalMessages.Add(txtBox1.Text);
msgObject.LabelText = txtBox1.Text;
txtBox1.Text = string.Empty;
startSubliminal = true;
msgObject.Show();
msgObject.BringToFront();

}

private void timer2_Tick(object sender, EventArgs e)
{
msgObject.Hide();
}
}

最佳答案

您首先如何显示第二种形式(消息形式)?您可能正在使用 .Show() (对吗?),这无论如何都会使表单“窃取”焦点。这同样适用于 .Activate().BringToFront()

相反,您可以做的是显示消息表单并确保它位于当前表单的顶部,然后再次激活当前/主表单。

像这样的东西应该可以工作:

var frm = new YourMsgForm();
frm.Show(this);
this.Activate();

这是一个演示:

Showing a secondary form without interrupting the current one.

请注意,我使用了 .Show(this) 而不是 .Show(),这是为了将当前表单设置为 Owner 的新形式,这样我们保证新形式将保持在当前形式之上。这相当于调用 frm.Owner = this; 然后调用 frm.Show();

另一种确保表单位于顶部的方法是设置 TopMost属性而不是 Owner 属性。但是,这样做会使新窗体也位于其他窗口之上(不仅仅是您的应用程序)。

关于c# - 在不最小化其他窗口的情况下将窗口窗体,窗体置于最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51254184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com