C#在另一种形式上使用方法

C#在另一种形式上使用方法,c#,.net,winforms,visual-studio,C#,.net,Winforms,Visual Studio,在Windows C#应用程序的主窗体上,我有以下方法: public void uploadNew(String newName, String filePath) { //Make sure file doesn't exist, then continue if (!File.Exists(basePath + POnumber + newName)) { File.Copy(filePath,

在Windows C#应用程序的主窗体上,我有以下方法:

        public void uploadNew(String newName, String filePath)
    {
        //Make sure file doesn't exist, then continue
        if (!File.Exists(basePath + POnumber + newName))
        {
            File.Copy(filePath, basePath + POnumber + newName);
            LogSubmit("Added New File " + newName);
            listFiles();
        }
        else
        {
            //The file already exists
                        }
    }
代码的含义其实并不重要。这就是我要做的。我需要一个新的文件上传表单与一些选项等。我需要的是将两个变量发送回主窗体以插入该方法

操作基本上就是这样


主窗体->单击按钮->窗体2->操作->发送回要上载的变量新建->关闭窗体2

我想您需要的是一个对话框。基本上,您可以在MainForm中执行以下操作:

using(var form = new Form2())
{
    if(form.ShowDialog() == DialogResult.Ok)
    {
        // Newname and Filepapth are properties you set in the Form2
        uploadNew(form.NewName, form.Filepath);
    }
}
在表单2中,您可能会有一个确定、取消按钮。对于Ok按钮事件,您可以设置this.DialogResult=DialogResult.Ok。在取消事件时,您可以将其设置为其他内容

这是我的想法,所以有些事情可能是错的,但概念是一样的

另外,一个好主意是将UploadFile移动到一个新类,这样就不会将业务逻辑绑定到UI逻辑中


这里有一个更完整的示例:

不要将方法放入表单中!将它放在一个单独的类中。与其将变量发送回UploadNew,为什么不将变量放在一个单独的类中,以及上面提到的方法和命名的类中,以解释变量的作用,然后在需要发送回时设置它们,在这里,您可以使用这个类的实例来获取值。这个对话框不起作用,它比这个复杂一点(我只是想简化)。至于班级。我可以,但我不知道如何执行某些功能,例如运行“listFiles”函数,从主窗体的列表框中清除项目,以及其他一些事情。@user2594008所以通常您也会将依赖函数移到同一个类中。如果它们不需要实例,甚至可以将它们设置为静态。通常,将业务逻辑移出UI代码是一个好主意,这样可以更容易地维护、测试和重用。例如:对于listFiles(),您可以让外部类方法返回列表[],并将其绑定到UI代码中的Listbox。