0

が付いている勝利フォームがありListBoxます。動的に作成したいDataTable(今まではいくつかの列のみを宣言しました-コードで確認できます-後でDataTable既存の空にリンクするために使用しますDataBase)が、にリンクする方法がわかりませんListboxそれから4つの要素を「取ります」:event_time , event_filename , event_name , event_fullpath。plsヘルプ、

これまでの私のコードの一部は次のとおりです。

    private delegate void AppendListHandler(string event_filename, String event_name, String event_fullpath);

    private void AppendText(string event_filename, String event_name, String event_fullpath)
    {
        if (lstResultLog.InvokeRequired)
            lstResultLog.Invoke(new AppendListHandler(AppendText), new object[] { event_filename, event_name, event_fullpath });
        else
        {
            DateTime event_time = DateTime.Now;
            //String event_duration = event_time.ToString("HH:mm");
            lstResultLog.Items.Add(event_time + event_filename + event_name + event_fullpath);
        }

        DataTable table = new DataTable("tbl_Event");
        table.Columns.Add("event_duration");
        table.Columns.Add("event_name");
        table.Columns.Add("event_filename");
        table.Columns.Add("event_fullpath");
        table = (DataTable)lstResultLog.DataSource;
    }

lstResultLogはListBoxの名前であり、ListBoxのすべてのフィールドは、宣言されたDataTableおよびデータベースとまったく同じ名前になります。

4

1 に答える 1

1

DataTable必要なデータを保持するタイプのフィールドをフォームに含めることができます。次に、リストボックスにアイテムを追加するたびに、同じデータを含む行をデータテーブルに追加します。

public class YourForm
{
    private DataTable _table;
    public YourForm()
    {
        InitializeComponents();
        _table = BuildDataTable();
    }

    private DataTable BuildDataTable()
    {
        DataTable table = new DataTable("tbl_Event");
        table.Columns.Add("event_duration");
        table.Columns.Add("event_name");
        table.Columns.Add("event_filename");
        table.Columns.Add("event_fullpath");
        return table;
    }

    private void AppendText(string event_filename, String event_name, String event_fullpath)
    {
        if (lstResultLog.InvokeRequired)
            lstResultLog.Invoke(new AppendListHandler(AppendText), new object[] { event_filename, event_name, event_fullpath });
        else
        {
            DateTime event_time = DateTime.Now;
            lstResultLog.Items.Add(event_time + event_filename + event_name + event_fullpath);
            //Create new row
            var row = _table.NewRow();
            // Fill row values
            row["event_name"] = event_name;
            // Add row to table
            _table.Rows.Add(row);
        }
    }
}

また、データをデータベースに送信する必要がある場合は、データを_table保存するメソッドにパラメーターとしてフィールドを送信するだけです。

于 2012-12-22T19:13:20.987 に答える