0

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

4

3 回答 3

2

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

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");

这样,我使用相同的方法通过将命令指定为字符串来执行不同的命令。如果您愿意,您可以使用不同的方法执行不同的命令(以提高代码的可读性)。我相信这已经让您了解了如何创建实用程序方法。

于 2013-02-07T21:23:14.677 回答
0

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

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

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

或清除一堆文本框:

public void ClearTextBoxes(IEnumerable<Textbox> textBoxesToClear) { foreach(Textbox textbox in textBoxesToClear) {textbox.Clear();} }
于 2013-02-07T21:13:44.207 回答
0

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

public class MyNewClass
{
    Form1 _form;

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

    public void ClearTextBoxes()
    {
        _form.txtFirstName.Clear();
        //Clear the rest
    }
}
于 2013-02-07T21:14:35.923 回答