gpt4 book ai didi

c# - 不关注 MessageBoxButton 的 MessageBox

转载 作者:太空狗 更新时间:2023-10-29 20:02:46 26 4
gpt4 key购买 nike

有没有一种方法可以在 C# 中显示 MessageBox 而无需将焦点放在消息框中的按钮上?例如以下代码片段(未按预期工作):

 MessageBox.Show("I should not have a button on focus",
"Test",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);

我想要的是显示 MessageBox 时不关注 [Yes] 或 [No]。背景是客户扫描了几个条码,在and处有一个回车。因此,当消息框弹出时,他们会在没有注意到消息框的情况下扫描更多条形码,从而“按下”按钮。

最佳答案

好吧,你当然可以通过一些技巧来做到这一点。

[DllImport("user32.dll")]
static extern IntPtr SetFocus(IntPtr hWnd);

private void button1_Click(object sender, EventArgs e)
{
//Post a message to the message queue.
// On arrival remove the focus of any focused window.
//In our case it will be default button.
this.BeginInvoke(new MethodInvoker(() =>
{
SetFocus(IntPtr.Zero);//Remove the focus
}));

MessageBox.Show("I should not have a button on focus",
"Test",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question,
MessageBoxDefaultButton.Button3);
}

请注意,上面的代码假设当 BeginInvoke 被调用时 MessageBox 被显示并且它获得了按钮的焦点。据我所知,情况通常如此。如果你想确保消息框已经显示,你可以使用 this code找到它,然后您可以移除焦点。

关于c# - 不关注 MessageBoxButton 的 MessageBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28624271/

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