0

这是我的问题...我有一个带有 ListBox 和 RichTextBox 的 Windows 窗体,以及一个带有一些功能的单独类文件...

我知道如何更新一个简单的文本框,但不是一个列表视图,因为如果我使用相同的代码,我会为 myFunc 的每一步获得 1 个新项目,重点是:

//myFunc loads
var lv = listProcess.Items.Add("This is my item");
//myFunc step1
lv.SubItems.Add("Column2 step1 status");
lv.SubItems.Add("Column3 step1 status");
lv.SubItems.Add("Column4 step1 status");
//myFunc step2
lv.SubItems.Add("Column2 step2 status");
lv.SubItems.Add("Column3 step2 status");
lv.SubItems.Add("Column4 step2 status");
//myFunc ends
//Remove item "lv" from listview.

我希望有一个人可以帮助我...

form1.cs

public Form1()
    {
        InitializeComponent();
        var func = new System.Threading.Timer(otherclass.myFunc, null, 0, 60000);
    }

其他类.cs

public class otherclass
{
    public static void myFunc(object sender)
    {
        var lv = listProcess.Items.Add("This is my item");
        for(int i; i <= x; i++)
        // Update lv subitems here
        next
        // Update richTextBox1 here when all steps are done

    }
}

我希望有人能帮助我,因为我很迷茫

4

1 回答 1

0
public class otherclass   // otherclass means: should not know about ListViews or RTBs
{
    public static void myFunc(object sender)
    {
        var lv = listProcess.Items.Add("This is my item");
        for(int i; i <= x; i++)
        // Update lv subitems here
        next
        // Update richTextBox1 here when all steps are done

    }
}

对于您的一般问题:

  1. 使用 WinForms 计时器(不是 Threading.Timer)
  2. 当它滴答作响时,启动一个Backgroundworker
  3. Bgw 执行 DOWork 中的函数,更新 Completed 中的 ListView。

因此,您需要的是List<string>MyFunc().

于 2012-09-17T18:46:40.803 回答