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);
    }

otherclass.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 に答える