keydown事件(按说1它打开一个过程按2它关闭该过程)

时间:2014-01-31 13:18:23

标签: c# winforms

我正在创建一个应用程序,当你按1时它会打开说SQL,如果你按2就会关闭SQL

好吧所以这就是问题,如果我有多个按钮,我使用keydown事件就可以在第一个按钮上工作 完全无视我的其他keydowns不用说这是一个问题,因为我的应用程序包含大约10个按钮,所有按钮都有自己的keydowns和特定的键,有人知道我怎么能让它正常工作

宣布我的流程

    private static Process GetSQL()
    {
        Process sql = new Process();
        return sql;
    }

我如何杀死我的流程

        public static void killSql()
        {
            System.Diagnostics.Process[] procs = null;

            try
            {
                procs = Process.GetProcessesByName("Ssms");

                Process sqlProc = procs[0];

                if (!sqlProc.HasExited)
                {
                    sqlProc.Kill();
                }
            }
            finally
            {
                if (procs != null)
                {
                    foreach (Process s in procs)
                    {
                        s.Dispose();
                    }
                }
            }
        }


        private void btnSQL_KeyDown1(object sender, KeyEventArgs e)
        {


            if (e.KeyCode == Keys.F3)
            {
                killSql();
            }


        }

我怎么称呼

    private void btnSQL_Click(object sender, EventArgs e)
    {
        try
        {
            Process SQL = GetSQL();
            SQL.StartInfo.FileName = (@"C:\Program Files (x86)\Microsoft SQL                  Server\110\Tools\Binn\ManagementStudio\Ssms.exe");
            SQL.Start();

        }

        private void btnSQL_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                this.KeyPreview = true;
                GetSQL();
            }
        }

1 个答案:

答案 0 :(得分:1)

请查看此article。简而言之 - 在任何给定时间只有一个控件可以有焦点,这个焦点将接收键盘输入。我建议你让你的窗户听键盘输入。

你可以做类似的事情 声明一个方法,它将启动你的过程:

void StartSQL()
{
         Process SQL = GetSQL();
         SQL.StartInfo.FileName = (@"C:\Program Files (x86)\Microsoft SQL                  Server\110\Tools\Binn\ManagementStudio\Ssms.exe");
         SQL.Start();
}

然后在有keydown事件时调用此方法:

void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
    if(e.KeyCode == Keys.F5)
    {
        StartSQL();
    }
    else if(....)
    .....
}

并让您的相应按钮仅用于点击(它应该用于什么):

private void btnSQL_Click(object sender, EventArgs e)
    {
         StartSQL();
    }