1

私はまだこれに慣れていないので、できる限り自分の問題を説明しようとします。英語は私の母国語ではないので、用語の使い方が間違っていたら申し訳ありません。

ボタンが押されるたびに実行される 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
    }

「sourceUrl」の部分を除いて、すべてのボタンのコードは同じです。さらにボタンを追加したい場合は、コード全体をコピーして貼り付ける必要があり、アプリケーションが巨大になり始めています。コードを 1 回だけ使用して、ボタンが押されるたびにアクションまたはメソッドを呼び出すことで、コードを縮小する方法はありますか。したがって、100 行のコードを複数回使用する代わりに、ボタンごとに 1 行のコードを配置し、その 1 行のコードのソースとなる 1 つの 100 行のコードを上部に配置します。

前もって感謝します

4

4 に答える 4

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....
}

InitializeComponentフォーム デザイナー ウィンドウを使用して共通ハンドラーとタグを設定することも、呼び出しでデザイナーが用意したコードを動的に模倣することもできます。

button1.Click += buttonCommonHandler;
button1.Tag = "www.myurl.com";
button2.Click += buttonCommonHandler;
button2.Tag = "www.anotherurl.com";
于 2013-09-09T12:57:12.783 に答える
2

それが関数の目的です。このレイアウトを使用します。

private void YourFunc(string sourceUrl)
{
    //Grab data
    code

    //Store data
    code

    //Write data
    code
}

ボタンのイベント ハンドラーは次のようになります。

private void button1_Click(object sender, EventArgs e)
{
    YourFunc("www.myurl.com");
}

private void button2_Click(object sender, EventArgs e)
{
    YourFunc("www.myurl2.com");
}
于 2013-09-09T12:58:07.087 に答える
0

確かに方法はあります。関数全体を、url を文字列パラメーターとして受け取る関数にするだけです。そして、コード ビハインドからその関数を呼び出します。

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

private void ProcessData(string sourceUrl)
{
    //Grab data
    code
    code
    code

    //Store data
    code
    code
    code

    //Write data
    code
    code
    code
}
于 2013-09-09T12:57:29.657 に答える