将信息发送到另一个表单c#

时间:2010-02-15 14:57:32

标签: c# forms

我有一个将文件上传到服务器的应用程序,但是当我按下上传时它会冻结直到完成,所以我想要弹出另一个表单,说上传并在该表单上嵌套所有上传内容冷冻那个主要形式。但要做到这一点,我需要能够将选定的信息发送到其他表格。

我尝试过使用BackgroundWorker,但是不起作用,表单仍然冻结。

3 个答案:

答案 0 :(得分:3)

之所以冻结是因为你在与GUI或主线程相同的线程上进行上传。 您可以创建一个工作线程来处理上传的工作,这样GUI在处理上传时就不会锁定。

示例:

    private void uploadButton_Click(object sender, EventArgs e)
    {
        object[] params = new object[] { "your file what ever type this is a generic example"};
        Thread uploadThread = new Thread(new ParameterizedThreadStart(processUpload));
        uploadThread.IsBackground = true;
        uploadThread.Start(params);
    }

    private void processUpload(object params){
       // do upload logic here 
       object[] _params = (object[])params;
       string s = _params[0].ToString();
    }

将信息从一种形式传递到另一种形式是直截了当的,但是这种形式也会在处理时导致锁定。如果这就是你想要做的,那么只需创建一个构造函数来为你想传递的任何东西取一个参数。然后相应地调用它。

private string something = null;

public MySecondForm(string Something){
  this.something = Something;
  MessageBox.Show(this.something);
}

// Call this in the parent form 
MySecondForm mySecondForm = new MySecondForm("hello world");
mySecondForm.Show();

答案 1 :(得分:1)

如果您使用的是WebClient课程,则可以使用UploadFileAsync方法。您还可以将一些信息从一个表单传递到另一个表单,如下所示。

<强>窗体2

向Form2添加一个简单的构造函数。

public Form2(string path) { // ... }

<强> Form1中

Form2 frm2 = new Form2("Path");

答案 2 :(得分:0)

Take a look at this example on Code Project了解一些实施技巧。