我正在尝试创建一个用C#编写的简单WinForms应用程序,该应用程序:
1.从文字方块取得使用者输入。
1.使用该文本框中的数据,并将其存储在一个user_command
变量中,然后在一个方法中使用该变量,该方法在windows cmd中运行该变量中的字符串。
例如:我在文本框中输入“calc.exe”,然后程序将其传递给cmd,从而打开计算器。
我不知道如何使用该文本框中数据并将其放入System.Diagnostics.Process.Start("CMD.exe", user_command);
我将离开下面的所有代码:
using Microsoft.Win32;
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 gui_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
string user_command = textBox1.Text;
}
private void textBox1_TextChanged(object sender, EventArgs e, string user_command)
{
System.Diagnostics.Process.Start("CMD.exe", user_command);
}
}
}
我得到的错误是:
Error CS0123 No overload for 'textBox1_TextChanged' matches delegate 'EventHandler' gui_1
2条答案
按热度按时间acruukt91#
这里的问题是您在textBox1_TextChange事件处理程序上放置了第三个参数,这导致了错误。
我建议您将
System.Diagnostics.Process.Start("CMD.exe", user_command);
放在button1_Click事件上,并删除textBox1_TextChange上的第三个参数。当您单击button1时,它将运行CMD.exe
,并将user_command
作为参数。编辑:
正在执行不同的进程与参数.尝试键入在您的
textbox1
之前点击这button1c:\test.txt
.这将尝试打开驱动器c:上的test. txt文件并询问您是否要创建该文件(如果该文件不存在)。
编辑2:
执行
CMD.exe
以执行该参数。/c
参数将在启动CMD.exe时执行在textbox1中输入的参数pkwftd7m2#
eventargs(e)应该包含复选框中的值。放置一个断点并检查它。我相信你会在那里找到文本。
删除第三个参数以再次开始匹配重载!
我希望这段代码是出于教育目的,因为它将在运行它的服务器的安全性上打开一个巨大的缺口。