C#Window在Linux上以单声道失去焦点

时间:2016-03-08 03:09:18

标签: linux mono

我在Visual Studio中使用C#构建了一个简单的游戏,该游戏基于具有主窗口的旧BASIC轰炸机游戏,以及提供地图图像和一组设置的其他子窗口。这个程序在Windows中运行良好。但是,当我使用" mono"在我的Linux虚拟机上运行程序时。命令,只有在没有打开子窗口的情况下,程序才能正常运行。如果打开任何子窗口并随后关闭,则主窗口永远不会重新获得焦点。没有菜单选项或按钮功能。他们都变灰了。唯一的办法是杀死这个过程。我正在运行Lubuntu 15.10,根据Synaptic Package Manager的详细信息,各种单声道支持库的版本是3.2.8。我比任何事情更好奇,看我是否只需要等待更多" System Window"支持添加到单声道运行时。提前感谢任何回复。

附加说明 - 2016年3月8日

这是对导致该行为的代码请求的响应。

由于我的程序非常冗长,我使用Microsoft Visual Studio 2015快速构建了一个简单的C#程序,该程序具有父窗口和按下按钮调用的子窗口。此示例程序展示了我在Windows和Linux上的轰炸机程序中看到的相同行为。

在Windows中,当显示并关闭子窗口时,焦点将返回到父窗口,我可以使用提供的菜单选项关闭父窗口和程序。但是,当我将此程序移植到我的Linux系统(在虚拟机中运行的Lubuntu 15.10)时,父窗口在子窗口打开然后关闭后永远不会重新获得焦点。

这是父级的C#代码(称为Form1)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq; 
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ParentChild  
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Child testChild = new Child();
            testChild.ShowDialog();
        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

这是支持子类代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ParentChild
{
    public partial class Child : Form
    {
        public Child()
        {
            InitializeComponent();
        }

        private void btnChild_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}

我希望澄清事情。

0 个答案:

没有答案