5

チェックリスト ボックスに問題があります。

public void GetFolder()
    { 
         var dict = new Dictionary<string, string>();
         foreach (Folder folder in rootfolder.FindFolders(new FolderView(100)))
            {
             dict.Add(folder.Id.ToString(),folder.DisplayName);
            }        

       checkedListBox1.DataSource = new BindingSource(dict, null);
       checkedListBox1.DisplayMember = "Value";
       checkedListBox1.ValueMember = "Key";

    }

そして今、すべてのチェックリストボックスを取得したいのですが、

私はこれを行います

         foreach (object item in checkedListBox1.CheckedItems)
        {
            lala = lala + item +"|";

        }

私の CheckedListbox には、ディレクトリから読み取ったすべてのフォルダーの CheckIcon と名前が表示されます。いくつかの設定にフォルダー ID を保存したいのですが、ID のみですが、常にフォルダー名と ID を一緒に取得しています。

誰かが私を助けてくれるといいのですが、私の目にトマトが入っているかもしれません:)

4

8 に答える 8

1
public void GetFolder()
    { 
         var dict = new Dictionary<string, string>();
         ArrayList arr = new ArrayList();
         foreach (Folder folder in rootfolder.FindFolders(new FolderView(100)))
            {
             dict.Add(folder.Id.ToString(),folder.DisplayName);
             arr.Add(folder.Id.ToString());
            }        

       checkedListBox1.DataSource = new BindingSource(dict, null);
       checkedListBox1.DisplayMember = "Value";
       checkedListBox1.ValueMember = "Key";

       //Do whatever to arraylist..
    }

これにより、すべてのIDを含む配列リストが表示されます。これをソースにバインドするか、foreachループを実行してすべてのアイテムを取得できます。

于 2012-11-15T13:14:42.593 に答える
1

OK、これを試してください:

ArrayList folders=new ArrayList();
foreach (Folder folder in rootfolder.FindFolders(new FolderView(100)))
            {
             folders.Add(folder);
            }    

       checkedListBox1.DataSource = folders;
       checkedListBox1.DisplayMember = "DisplayName";
       checkedListBox1.ValueMember = "Id";

foreach (Folder item in checkedListBox1.CheckedItems)
        {
            lala += item.Id.ToString() +"|";

        }
于 2012-11-15T14:05:34.307 に答える
1

多分私は解決策を持っています。

辞書の代わりに DataTable を使用します

        DataTable table = new DataTable();
        table.Columns.Add("Name",typeof(string));
       table.Columns.Add("Key", typeof(string));

       table.Rows.Add("ID1=", "Folder1");
       table.Rows.Add("ID2=", "Folder2");
       table.Rows.Add("ID3=", "Folder3");
       table.Rows.Add("ID4=", "Folder4");
       table.Rows.Add("ID5=", "Folder5");
       table.Rows.Add("ID6=", "Folder6");

そして今、私が得たすべての選択されたアイテムをクリックしてください

foreach (DataRowView objDataRowView in checkedListBox1.CheckedItems) { MessageBox.Show("私の値: " + objDataRowView["名前"]); }

私のIDのみが戻ってきます:)

于 2012-11-16T07:50:43.213 に答える
1

lala が設定文字列だと思います。

その場合は、これを使用します。

lala = lala + item.Value.ToString() +"|";

このように、lala woud には次のようなすべての ID が含まれます: 1|2|34|567|5...

于 2012-11-15T13:28:28.123 に答える
0

これを試して

foreach (object item in checkedListBox1.CheckedItems)
{
   DictionaryEntry de = (DictionaryEntry)item;
   string htKey = de.Key.ToString();
}
于 2012-11-15T13:14:13.420 に答える
0

foreach で、オブジェクトの代わりに var アイテムを作成します。その後、Value プロパティにアクセスできるようになります。

于 2012-11-15T13:44:39.710 に答える
0

CheckedListBOx またはその他のコントロールを displaymember と valuemember にバインドするのは非常に簡単です。コントロールの datasource プロパティと、displaymember および valuemember を指定するだけです。

以下は、私がテストした作業コード100%の作業です:P

/* checkedlistbox bindig code */

    DataSet ds = new DataSet();

    string strChechboxlist = "select Subject_ID as code, SubjectName as Display from dbo.Mst_Subject_Detail";

/* filldataset() is function i have created to return dataset. */

    ds = dc.FillDataSet(strChechboxlist);
    if (ds.Tables[0].Rows.Count > 0)
    {
    checkedListBox1.DataSource = ds.Tables[0];
    checkedListBox1.DisplayMember = "Display";
    checkedListBox1.ValueMember = "code"; 

    }

/* for fetching valuemember or displaymember from checkedlistbox */


    for(int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
    {

    /*Now with the following code we can get valemember and displaymember as per your requirement you can store in table. */

    DataRow r;

    r = ((DataRowView)this.checkedListBox1.CheckedItems[i]).Row;  

    string val = (r[this.checkedListBox1.ValueMember]).ToString();  

    string dis = (r[this.checkedListBox1.DisplayMember]).ToString();    

    r = null;

    }

注:-コードの動作デモを添付しています

于 2015-01-17T17:08:17.007 に答える