0

where 文字列はDictionary<string, List<string>>ファイルへのパスです。ファイルの名前をコンボ ボックスに表示し、ファイル名を値として使用してキャプチャしたいと考えていますSelectedValueChanged

  var cmbDatasource = (from moduleReference in moduleReferences
                       select new { FilePath = moduleReference.Key, Filename = new FileInfo(moduleReference.Key).Name }).ToList();
  cmbModules.DataSource = cmbDatasource;
  cmbModules.DisplayMember = "Filename";
  cmbModules.ValueMember = "FilePath";

私は自分のSelectedValueChangedイベントでこれをやっています

private void cmbModules_SelectedValueChanged(object sender, EventArgs e)
{
  var cmb = (ComboBox)sender;
  if (cmb != null)
  {
    var test = cmb.SelectedValue.ToString();
  }
}

test値メンバー (パス) にアポーズする匿名型になります。

Linq Anonymous Type を使用した ComboBox の SelectedItem プロパティの使用

私はここを見てきましたが、私が違うことをしていることはわかりません。

Dictionary<string, List<string>> moduleReferences = new Dictionary<string, List<string>>();
moduleReferences.Add("C:\Test.txt", new List<string>());

コンボボックスは表示されるはずですが、イベントをキャプチャすると、ディクショナリで検索することがTest.txt期待されます。C:\Test.txt私はここで何か悪いことをしていますか?

4

2 に答える 2

1

あなたが実行するとき私は信じています

var test = cmb.SelectedValue.ToString(); 

moduleReference.Keyと同じタイプのアイテム自体ではなく、選択された値のみを取得します。レコード全体を取得したい場合は、実行する必要があります

var test = cmb.SelectedItem;
于 2012-10-17T13:40:02.870 に答える