【问题标题】:C# use a method on another formC# 在另一个窗体上使用方法
【发布时间】:2015-03-10 16:07:15
【问题描述】:

在我的 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

【问题讨论】:

  • 不要把方法放在表格里!把它放在一个单独的类中。
  • 而不是将变量发送回 UploadNew 为什么不在单独的类中使用变量以及上面提到的方法和命名的类来解释变量的作用,然后在需要时设置它们将它们发回,从这里你可以使用这个类的实例来取回值。

标签: c# .net winforms visual-studio


【解决方案1】:

我认为你想要的是一个对话。本质上,您可以在 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);
    }
}

在 Form2 中,您可能会有一个确定、取消按钮。对于 Ok Button 事件,您可以设置 this.DialogResult = DialogResult.Ok。在 Cancel 事件中,您可以将其设置为其他值。

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

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

这里有一个更完整的例子:How to return a value from a Form in C#?

【讨论】:

  • 对话框不起作用,它比这更复杂一些(我只是想简化一下)。至于班级。我可以,但我不知道如何执行某些功能,例如运行“listFiles”功能,该功能从主窗体的列表框中清除项目和其他一些东西。
  • @user2594008 所以通常你也会将依赖函数移动到同一个类。如果它们不需要实例,您甚至可以将它们设为静态。将业务逻辑从 UI 代码中移出通常是一个好主意,这样更容易维护、测试和重用。例如:对于 listFiles(),您可以让外部类方法返回 List[] 并将其绑定到 UI 代码中的 Listbox。
猜你喜欢
  • 1970-01-01
  • 2011-08-10
  • 2012-09-10
  • 2022-01-23
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多