从具有相同值的另一个项目调用窗体表单

时间:2012-08-30 10:52:43

标签: c# vb.net winforms

我打开一个表单并初始化该表单中的函数。进度条正在运行。然后我隐藏具有相同功能的表单。现在我需要显示具有相同进度条值的另一个项目的窗口。是否可以使用新关键字调用相同的表单?

注意:用于隐藏表单的我的函数是在VB.NET和函数中,它将显示表单是在C#.net

这里是我的代码VB.NET(函数将隐藏窗口)

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click

Dim objUpload As New UploadingList
objUpload.Show()
objUpload.Hide()
objUpload.UploadFiles()

End Sub

此uploadfiles()函数初始化进度条并上传文件。 所以,如果我需要从C#项目中显示窗口,我该怎么办?如果我创建一个新项目,进度条值也会变为默认值。解决这个问题的方法是什么?

private void btnFiles_Click(object sender, EventArgs e)
        {
            ICloudProvider.UploadingList objUpload = new ICloudProvider.UploadingList();
            objUpload.Show();
        }

如果我在C#中执行上述功能,则所有控件都会达到其默认值。所以进度条没有进展。

1 个答案:

答案 0 :(得分:0)

在表单上创建一个公共共享变量,以存储对VB程序中创建的实例的引用。

表单将包含以下行:

Public Shared Instance as UploadingList

创建表单时,需要设置此变量:

Dim objUpload As New UploadingList
UploadingList.Instance = objUpload
objUpload.Show()
objUpload.Hide()
objUpload.UploadFiles()

现在从您的C#程序中,您只需使用现有的实例,而不是创建表单的新实例:

private void btnFiles_Click(object sender, EventArgs e)
{
  ICloudProvider.UploadingList objUpload = ICloudProvider.UploadingList.Instance;
  if(objUpload!=null)
  {
    objUpload.Show();
  }
}

请记住在关闭表单时将Instance变量设置为null(VB中没有任何内容)。