0

どういうわけか私は今朝目が見えないようです;) リストボックスからオブジェクトコレクションを読み取る次のコード[1]があります。文字列 bi を使用すると、文字列を「取得」できます

bには、xcopyコードでバックアップしたいファイル名とディレクトリパスが保存されています[2]。

コード:

private void btnBenutz_Click(object sender, EventArgs e)
{
    lblAusgabe2.Text = "";
    ListBox.ObjectCollection a = listBox1.Items;
    foreach (string x in a)
    {
        b = x;
        lblAusgabe2.Text += "\n" + b;
    }
}

より多くのコード:

 Process.Start("XCOPY.EXE", "/E /I /Y" + b + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");

おそらく必要な配列として b を使用するにはどうすればよいですか? そうしないと、常に最初の項目だけが読み上げられますか? また、btnBenutz の外で使用する必要があるプロセス開始...そのため、一部の変数をパブリック部分クラス Form2 で初期化する必要があります: Form

4

3 に答える 3

1

として定義bList<string>ます。次のようなより適切な名前も使用しますfileNameList

private List<string> fileNameList; // a class field, not a local variable

次に、ファイル名をリストに追加します。

private void btnBenutz_Click(object sender, EventArgs e)
{
    lblAusgabe2.Text = "";
    ListBox.ObjectCollection a = listBox1.Items;
    foreach (string x in a)
    {
        fileNames.Add(x);
        lblAusgabe2.Text += Environment.NewLine + x; // Why are you doing this?
    }
}

次に、別の場所で、xopy各ファイルに対してコマンドを実行します。

foreach(string fileName in fileNameList)
{
    Process.Start("XCOPY.EXE", "/E /I /Y " + fileName + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");
}

それがあなたが達成しようとしているものなら!

于 2013-03-18T07:58:43.543 に答える
0
private void btnBenutz_Click(object sender, EventArgs e)
{
    var sb = new StringBuilder();
    foreach (string x in listBox1.Items)
    {
        sb.Append("\n" + x);
    }
    // then use sb.ToString() somewhere...
}
于 2013-03-18T06:31:55.010 に答える
0

あなたがコメントしたように、別のボタンをクリックするなど、他の場所から呼び出したい場合は、次のようにします。

1) クラスレベルで文字列のリストを宣言する

 List<string> fileNameList ;

2)意味のある名前で関数を作成します。たとえば、以下のように StartXcopy とします

public void StartXcopy()
{
       ListBox.ObjectCollection a = listBox1.Items;
       fileNameList = new List<string>();
       foreach (string x in a)
       {
            fileNameList.Add(x);
            lblAusgabe2.Text += "\n" + x;
       }

       foreach (string filename in fileNameList)
       {
           System.Diagnostics.Process.Start("XCOPY.EXE", "/E /I /Y" + filename  + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\UserData\\");
       }
}

3)次に、以下のボタンクリックのように、必要な場所からこの関数を呼び出します

 private void btnBenutz_Click(object sender, EventArgs e)
 {
      lblAusgabe2.Text = "";
      StartXcopy(); 
 }

: ここでは、常に listBox1 アイテムを反復処理していると想定しています。

于 2013-03-18T06:35:43.733 に答える