打电话给我的班级&来自另一个类中的按钮的方法

时间:2010-06-24 17:32:12

标签: c# asp.net

我有一个WindowsForm,它有一个DataGridView,显示我的应用程序的输出。带按钮的类是DriveRecursion_Results.cs。我希望它能够在用户按下按钮后调用我的SanitizeFileNames类中的方法FileCleanUp()。我不太清楚如何做到这一点。

以下是两个类的代码:

    public partial class DriveRecursion_Results : Form
{
    public DriveRecursion_Results()
    {
        InitializeComponent();

    }

    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    public void DriveRecursion(string retPath)
    {
        //recurse through files.  Let user press 'ok' to move onto next step        
        // string[] files = Directory.GetFiles(retPath, "*.*", SearchOption.AllDirectories);

        string pattern = " *[\\~#%&*{}/<>?|\"-]+ *";
        //string replacement = "";
        Regex regEx = new Regex(pattern);

        string[] fileDrive = Directory.GetFiles(retPath, "*.*", SearchOption.AllDirectories);
        List<string> filePath = new List<string>();


        dataGridView1.Rows.Clear();
        try
        {
            foreach (string fileNames in fileDrive)
            {

                if (regEx.IsMatch(fileNames))
                {
                    string fileNameOnly = Path.GetFileName(fileNames);
                    string pathOnly = Path.GetDirectoryName(fileNames);

                    DataGridViewRow dgr = new DataGridViewRow();
                    filePath.Add(fileNames);
                    dgr.CreateCells(dataGridView1);
                    dgr.Cells[0].Value = pathOnly;
                    dgr.Cells[1].Value = fileNameOnly;
                    dataGridView1.Rows.Add(dgr);
                    filePath.Add(fileNames);
                }

                else
                {
                    DataGridViewRow dgr2 = new DataGridViewRow();
                    dgr2.Cells[0].Value = "No Files To Clean Up";
                    dgr2.Cells[1].Value = "";
                }

            }
        }
        catch (Exception e)
        {
            StreamWriter sw = new StreamWriter(retPath + "ErrorLog.txt");
            sw.Write(e);

        }

    }

    private void button1_Click(object sender, EventArgs e)
    {

        //i want to call SanitizeFileName's method FileCleanup here.



    }


}

这是SanitizeFileNames:

public class SanitizeFileNames
{

    public void FileCleanup(List<string>filePath)
    {
        string regPattern = "*[\\~#%&*{}/<>?|\"-]+*";
        string replacement = "";
        Regex regExPattern = new Regex(regPattern);


        foreach (string files2 in filePath)
        {
            try
            {
                string filenameOnly = Path.GetFileName(files2);
                string pathOnly = Path.GetDirectoryName(files2);
                string sanitizedFileName = regExPattern.Replace(filenameOnly, replacement);
                string sanitized = Path.Combine(pathOnly, sanitizedFileName);
                //write to streamwriter
                System.IO.File.Move(files2, sanitized);

            }
            catch (Exception ex)
            { 
            //write to streamwriter

            }

        }

    }

}

1 个答案:

答案 0 :(得分:3)

private void button1_Click(object sender, EventArgs e)
{
   List<string> paths = new List<string>()
   // initialize paths to whatever is neccessary
   //....
   new SanitizeFileNames().FileCleanUp(paths)
}

只需创建一个类的实例,然后调用该方法。 但是,该方法本身不使用类的状态,因此可以将其更改为静态方法

public static void FileCleanup(List<string>filePath)

你可以直接在课堂上创建一个实例来调用它,如下所示:

SanitizeFileNames.FileCleanUp(paths)