将方法中的Args传递给C#中的Click事件方法

时间:2009-09-01 17:50:07

标签: c#

首先,我最熟悉Java编码。我正在用C#创建一个应用程序作为学习工具。在这个应用程序中,我通过Click事件方法调用方法。

    private void btnViewFile_Click(object sender, EventArgs e) {
        GetFileNames();
        lblOutputPath.Text = sb;
    }

    private StringBuilder GetFileNames() {
        StringBuilder sb = new StringBuilder();
        string[] fileNames = Directory.GetFiles(Dir);
        foreach (string s in fileNames)
            sb.Append(s);

        return sb;
    }

我想打破从Click方法中获取目录中每个文件的FileNames的代码,以使其更加模块化。我将获得StringBuilder对象的值,然后将其传递回Click事件方法。

无论如何,我会用Java来做这件事。这是一个有效的方法还是有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:5)

我认为这就是你要做的事情:

private void btnViewFile_Click(object sender, EventArgs e) 
{               
    lblOutputPath.Text = GetFileNames().ToString();    
}    

private StringBuilder GetFileNames() 
{        
    StringBuilder sb = new StringBuilder();        
    string[] fileNames = Directory.GetFiles(Dir);        
    foreach (string s in fileNames)            
        sb.Append(s);        
    return sb;    
}

答案 1 :(得分:2)

您的GetFileNames()方法已经返回了一个您忽略的值,因此您只需将GetFileNames()的返回值分配给标签的文本属性。

修改:重新阅读您的问题后,我有点困惑。是否要在实际单击按钮的单击事件之前将GetFileNames()的值赋值给单击事件,或者在单击时使用结果?您可以使用以下命令在单击之前将值分配给按钮:

btnViewFiles.CommandArgument = GetFileNames().ToString();

然后,当您单击按钮时,您可以使用以下命令读取CommandArgument:

Button btn = (Button)(sender);
lblOutputPath.Text = btn.CommandArgument;