删除代码中的冗余

Fic*_*Vic 1 c# duplicates shrink winforms

我还是新手,所以我会尽力解释我的问题.英语不是我的第一语言,所以如果我错误地使用某些术语,我会道歉.

我有一个100行代码,每按一次按钮就会执行一次.我的问题是,我有20个按钮,它们都包含相同的代码(它们在从不同来源获取信息的方式上略有不同).有没有办法做到这一点,而不是复制相同的代码太多次.

基本上我的代码是这样的:

    private void button1_Click(object sender, EventArgs e)
    {
    //file data source url
    sourceUrl = ("www.myurl.com")

    //Grab data
    code
    code
    code

   //Store data
    code
    code
    code

   //Write data
    code
    code
    code
    }
Run Code Online (Sandbox Code Playgroud)

除"sourceUrl"部分外,每个按钮都具有相同的代码.如果我想添加更多按钮,我必须复制>粘贴整个代码,我的应用程序开始变得巨大.有没有办法通过只让代码一次缩小代码,然后每次按下按钮时调用一个动作或方法.因此,不是多次使用100行代码,而是每个按钮都有一个行代码,顶部有一个100行代码,它们将成为该行代码的源代码.

提前致谢

Ste*_*eve 8

使用Tag按钮的属性存储源url字符串,然后为每个按钮设置相同的事件处理程序

private void buttonCommonHandler_Click(object sender, EventArgs e)
{
     Button b = sender as Button;
     CommonMethod(b.Tag.ToString());
}

private void CommonMethod(string sourceUrl)
{
   // Execute the common code here....
}
Run Code Online (Sandbox Code Playgroud)

您可以使用表单设计器窗口设置公共处理程序和标记,或者您可以动态地模拟设计者在InitializeComponent调用中为您准备的代码

button1.Click += buttonCommonHandler;
button1.Tag = "www.myurl.com";
button2.Click += buttonCommonHandler;
button2.Tag = "www.anotherurl.com";
Run Code Online (Sandbox Code Playgroud)