如何重复使用相同的代码清除文本框

时间:2013-02-07 21:10:30

标签: c# winforms visual-studio-2010

我有很多文本框和大约五个按钮。我想清除文本框并做一些其他在所有五个按钮中重复的事情。我想创建一个新类并放入所有重复的代码,以便我可以通过函数或方法重用代码。但是,问题是如果我创建一个新类,则会识别文本框。例如,如果我在新类中说txtFirstName.Clear(),则不会将其识别为新类。有什么办法吗?

3 个答案:

答案 0 :(得分:2)

使用静态方法为您需要重复使用的代码创建一个Utility类。一个示例是一个方法,您可以将容器引用传递给它,它将清除该容器或任何子容器内的所有文本框(或使它们只读)。请参阅以下代码:

public class utility
{

public static void MyTextBoxes(Control container, string CommandName){

        foreach (Control c in container.Controls){
        MyTextBoxes(c, CommandName);        

        if(c is TextBox){ 
          switch (CommandName)
          {
            case "Clear":
                c.Text = "";   
                break;
            case "ReadOnly":
                ((TextBox)c).ReadOnly = true;
                break;
          }  

        }   
    }    
}

在您的Form代码中,调用以下方法:

utility.MyTextBoxes(this, "Clear");
utility.MyTextBoxes(this, "ReadOnly");

这样我通过将命令指定为字符串,使用相同的方法来执行不同的命令。如果您愿意,您可以使用不同的方法执行不同的命令(代码可读性)。我确信这给了你一个关于如何创建实用方法的想法。

答案 1 :(得分:0)

您可以将文本框引用传递给类上的新方法。

public void ClearTextbox(Textbox textBoxToClear) { textBoxToClear.Clear; }

只需将文本框传递给新方法。

或清除一堆文本框:

public void ClearTextBoxes(IEnumerable<Textbox> textBoxesToClear) { foreach(Textbox textbox in textBoxesToClear) {textbox.Clear();} }

答案 2 :(得分:0)

您可以通过将当前表单作为参数传递给新类的构造函数来实现此目的。

public class MyNewClass
{
    Form1 _form;

    public MyNewClass(Form1 form)
    {
        _form = form;
    }

    public void ClearTextBoxes()
    {
        _form.txtFirstName.Clear();
        //Clear the rest
    }
}