将两个按钮的操作合并为Visual Studio2019 c#中的单个按钮

问题描述 投票:0回答:1

我已经在Visual Studio中创建了Gui,在其中创建了两个按钮。一个按钮用于显示ip,第二个按钮用于获取该IP并运行python脚本。但是我只想将这两个操作合并到一个按钮中,如果我单击按钮1st,它应该显示/获取ip,然后单击2nd,它应该触发python脚本,所有这些都可以单击一次按钮。

我尝试过的代码是:

private void button1_Click(object sender, EventArgs e)
        {
            //var fileName = "C:\\test1.txt";
            var fileName = "C:\\test.txt";
            var sr = new StreamReader(fileName);
            string fileContent = sr.ReadToEnd();

            var startBlock = "hello";
            var endBlock = "exit";

            var ip = ParseForIpRegex(fileContent, startBlock, endBlock);
            myTextBox.Text = ip; //Change this to match your code
        }
        private readonly string IPV4_PATTERN = "[0-9.]";
        //private readonly string IPV4_IPV6_PATTERN = "[A-Z0-9:./]";
        private string ParseForIpRegex(string textToSearch, string startBlock, string endBlock)
        {
            var pattern = $@"{startBlock}\D*\s*({IPV4_PATTERN}+).*{endBlock}";
            var ms = Regex.Match(textToSearch, pattern, RegexOptions.Singleline | RegexOptions.IgnoreCase);
            if (ms.Groups.Count > 0)
            {
                return ms.Groups[1].Value;
            }

            return string.Empty;
        }


private void button1_Click_1(object sender, EventArgs e)
        {
            var hostname = myTextBox.Text;
            var username = textBox1.Text;
            var password = textBox2.Text;

            var psi = new ProcessStartInfo();
            psi.FileName = @"C:\Python38\python.exe";

            var script = @"C:pythonscript.py";
            //var config_file = file_path;

            psi.Arguments = $"{script} {hostname} {username} {password}";

            psi.UseShellExecute = false;
            psi.CreateNoWindow = true;
            psi.RedirectStandardOutput = true;
            psi.RedirectStandardError = true;

            var errors = "";
            var results = "";
            MessageBox.Show("script processing");
            using (var process = Process.Start(psi))
            {
                errors = process.StandardError.ReadToEnd();
                results = process.StandardOutput.ReadToEnd();
            }

            Console.WriteLine("ERRORS:");
            Console.WriteLine(errors);
            Console.WriteLine();
            Console.WriteLine("Results:");
            Console.WriteLine(results);
            if (errors != "")
            {
                MessageBox.Show(errors);
            }
            else
            {
                MessageBox.Show(results);
            }

        }
    }

[请让我知道如何将这两种操作合并为一个。一键单击将执行第一个按钮操作,而第二个单击后将执行。

python c# .net visual-studio windows-forms-designer
1个回答
0
投票

所以您不使用args,只需调用方法:

private void button1_Click(object sender, EventArgs e)
{
     //DO job

     // simulate the second click
     button1_Click_1(object sender, EventArgs e)      
}

private void button1_Click_1(object sender, EventArgs e)
{

}
© www.soinside.com 2019 - 2024. All rights reserved.