0

フォームを開き、そのフォームで関数を初期化します。進行状況バーが実行されています。次に、同じ機能でフォームを非表示にします。ここで、プログレス バーの値が同じである別のプロジェクトのウィンドウを表示する必要があります。new キーワードなしで同じフォームを呼び出すことは可能ですか?

注:フォームを非表示にするために使用される私の関数は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#で上記の関数に従うと、すべてのコントロールがデフォルト値になります。したがって、進行状況バーに進行状況はありません。

4

1 に答える 1

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 では何も設定しない) に設定することを忘れないでください。

于 2012-08-30T16:48:05.067 に答える