【问题标题】:Write code for all buttons click为所有按钮编写代码单击
【发布时间】:2018-11-16 04:55:45
【问题描述】:

有一个代码可以从 URL 下载文本

string url = textBox1.Text;
string address = @url;
string newText = null;

HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;

using (var response = request.GetResponse())
{
    using (var reader = new StreamReader(response.GetResponseStream()))
    {
        newText = reader.ReadToEnd().ToLower();
    }
}

我尝试制作一个 windows 窗体应用程序,有很多按钮,每个按钮都包含相同的代码,每个按钮需要 20 秒

private void button1_Click(object sender, EventArgs e)
{
    // same code for  download text
    // some code where I use only "newText"
}

如何一次编写“下载代码”并查看所有按钮“newText”?

【问题讨论】:

  • 您可以为每个按钮的 Click 事件分配相同的事件处理程序。这样,无论按下哪个按钮,都会运行完全相同的代码
  • 我对你的最后一句话感到困惑。你能详细说明一下吗?
  • 如果您希望每个按钮执行相同的代码,您可以设置每个按钮的按钮单击事件处理程序指向相同的方法。您可以在表单设计器(C# 代码,而不是可视化设计器)中找到它。
  • designer中,选择所有按钮,进入Properties窗口,点击Events,双击Click。这样所有按钮的点击事件都将具有相同的功能。
  • 将下载代码放到一个函数中,并在需要的地方调用它。

标签: c# winforms button


【解决方案1】:

如果您希望在不同的事件处理程序中使用相同的代码,您只需创建一个方法:

public string GetNewText(string url)
{
    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    request.Credentials = CredentialCache.DefaultCredentials;

    using (var response = request.GetResponse())
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            return reader.ReadToEnd().ToLower();
        }
    }
}

然后在您的事件处理程序中调用该方法:

private void button1_Click(object sender, EventArgs e)
{
    string newText = GetNewText(textBox1.Text);
    // do something with newText
}

如果您真的想完全为所有按钮运行相同的代码,仅此而已,您可以将相同的事件处理程序分配给它们的Click 事件。不过,在这种情况下,我会重新考虑用户界面设计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2019-05-14
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多