有关如何使此方法成为一种方法的任何提示

Any tips on how to make this a method

我正在为一个周期性的 table 编程,目前只为每个按钮编程。现在我想把它变成一个方法,然后直接进入每个按钮,但我不知道该怎么做。

public void Formule()
    {
        txt_Chemical.Text = h + li + na + k + rb + cs + fr;
    }

    private void btn_H_Click(object sender, EventArgs e)
    {
        H++;
        h = "H";
        Formule();

        if (H > 1)
        {
            h = "";
            h = "H" + H;            
            Formule();
        }

    }

    private void btn_Li_Click(object sender, EventArgs e)
    {
        Li++;
        li = "Li";
        Formule();
        if (Li > 1)
        {
            li = "";
            li = "Li" + Li;
            Formule();
        }

    }

我想尽可能多地将按钮中的代码放入一个方法中,有什么想法吗?

只是 Dictionary 可以做什么的一个例子:

using System;
using System.Collections.Generic;

class Program
{
    static Dictionary<string,int> Values {get;set;}

    static void Main()
    {
        Values = new Dictionary<string,int>();
        Values["Li"] = 1;
        Values["H"] = 1;

        Click("Li"); // displays Li2 H1
        Click("H");  // displays Li2 H2
    }

    static void Click(string element)
    {
        Values[element]++;

        DisplayElements();
    }

    static void DisplayElements()
    {
        foreach(var v in Values)
        {
            Console.WriteLine(v.Key + v.Value);
        }
    }
}

此外,请考虑:

private void btn_H_Click(object sender, EventArgs e)
{
    H++;
    h = "H";
    Formule();

    if (H > 1)
    {
        h = "";
        h = "H" + H;            
        Formule();
    }
}

可以写成:

private void btn_H_Click(object sender, EventArgs e)
{
    H++;
    h = "H";

    if (H > 1)
    {
        h += H;
    }
    Formule();
}

第一件事就是第一 - 正如我在评论中所写:
帮自己一个大忙,开始为变量使用有意义的名称。六个月后你会感谢我的。
我根本无法强调那有多重要。

至此,我们来看看如何简化这段代码。

我注意到的第一件事是,通过使用简单的三元条件而不是繁琐的代码,可以显着简化每次按钮单击的代码,如下所示:

这段代码段:

H++;
h = "H";
Formule();

if (H > 1)
{
    h = "";
    h = "H" + H;            
    Formule();
}

可以转换为:

H++;
h = (H > 1) ? "H" + H : "H";
Formule();

同理,这段代码:

Li++;
li = "Li";
Formule();
if (Li > 1)
{
    li = "";
    li = "Li" + Li;
    Formule();
}

可以转换为:

Li++;
li = (Li > 1) ? "Li" + Li : "Li";
Formule();

现在,查看这两个段代码,基本上我看到在不同的变量(可能是字段)上执行相同的操作 - 当唯一的区别是字符串值时。

广义函数可能是这样的:

void ReCalculate(string name, ref int field, ref string textField)
{
    field++;
    textField = (field > 1) ? name + field : field;
    txt_Chemical.Text = h + li + na + k + rb + cs + fr;
}

然后你这样使用它:

private void btn_H_Click(object sender, EventArgs e)
{
    ReCalculate("H", ref H, ref h);
}

private void btn_Li_Click(object sender, EventArgs e)
{
    ReCalculate("Li", ref Li, ref li);
}

话虽这么说,这可能不是最好的方法,但问题缺少 minimal, complete, and verifiable example 所以我不得不利用我对你的实际程序知之甚少的知识来工作。