Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么RDP上没有显示消息框_C#_Winforms_Messagebox_Hyper V_Rdp - Fatal编程技术网

C# 为什么RDP上没有显示消息框

C# 为什么RDP上没有显示消息框,c#,winforms,messagebox,hyper-v,rdp,C#,Winforms,Messagebox,Hyper V,Rdp,我有一个简单的“hello world”程序和一个messagebox。它可以工作,但当我通过远程桌面运行它时,MessageBox不会显示(不在窗体下,但会消失,就像“MessageBox.show()”脚本没有运行一样) 这是一台虚拟hyper-v机器,运行Win Server 2012 该代码在开发环境中运行良好,并在该hyper-v over rdp的物理主机上进行了尝试,也按预期运行 private void button1_Click(object sender, EventArgs

我有一个简单的“hello world”程序和一个messagebox。它可以工作,但当我通过远程桌面运行它时,MessageBox不会显示(不在窗体下,但会消失,就像“MessageBox.show()”脚本没有运行一样)

这是一台虚拟hyper-v机器,运行Win Server 2012

该代码在开发环境中运行良好,并在该hyper-v over rdp的物理主机上进行了尝试,也按预期运行

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("hello world! from Window~");      
}
消息框应弹出,然后用户应在执行任何其他操作(如关闭窗口)之前单击“确定”按钮


是否应在虚拟机上检查任何其他设置?

听起来与另一个问题类似,他们发现窗口正在另一个会话中显示:

在找到正确的会话标识符后,OP能够让它工作,但他们正在进行一些DLL导入,并使用
WTSSendMessage
而不是
MessageBox
,这可能超出了您打算执行的范围


另一种可能是尝试另一种方法,即指定一个
IWin32Owner
,以强制在其中显示消息的上下文。

感谢您的回复。我终于找到了解决办法。 我将“目标框架”切换到调试-->属性-->应用程序下的.Net framework 4.5,该应用程序默认为.Net framework 4,然后再次编译。它是有效的。
有人知道为什么基于.Net framework 4编译的server2012上不显示msgbox吗?

hi@john,谢谢你的回复。但与相关问题有所不同。我的msgbox不会弹出,也不会在窗体下弹出。用户可以关闭窗口,但msgbox中的OK按钮应该按预期的那样按下。哦,我明白了。那我恐怕找不到任何东西了。