web-dev-qa-db-ja.com

Datagridviewコンボボックスの選択されたアイテムのテキストを取得するにはどうすればよいですか?

DataGridView内にあるコンボボックスの選択されたアイテムtextを取得する方法は?私は以下のコードを使用してみました:

dataGridView1.Rows[1].Cells[1].Value.ToString()

ただし、これにより、コンボボックスで選択されたアイテムのテキストではなく、このセルに関連付けられた値が提供されます。私もこれを試しました:

DataGridViewComboBoxCell cell = dataGridView1[1,1] as DataGridViewComboBoxCell;
string value = cell.Value.ToString();

しかし、これも役に立ちませんでした。

よろしくお願いします。前もって感謝します!

編集:

たとえば、テキストがNoYesで、値がそれぞれ0と1のコンボボックスがあるとします。ここで取得したいのは、コンボボックスが変更されたときのテキストYesまたはNoです。しかし、私が得ているのは、上記のコードを使用した0/1の値です。それが物事を明確にすることを願っています。

更新:

さて、私はこの問題に取り組んでおり、多くの努力と仲間のメンバーの助けを借りて、問題を解決し、必要な解決策を得ることができました:

解決策は次のとおりです。

string SelectedText = Convert.ToString(dataGridView1.Rows[0].Cells[1].FormattedValue.ToString());
8
palaѕн

DataGridViewでコンボボックスの選択された値と選択されたテキストを取得するには、次のコードを試してください

string SelectedText = Convert.ToString((DataGridView1.Rows[0].Cells["dgcombocell"] as DataGridViewComboBoxCell).FormattedValue.ToString());
int SelectedVal = Convert.ToInt32(DataGridView1.Rows[0].Cells["dgcombocell"].Value);
15
Rahul Rajput

私はこの方法でその文字列値をセルから引き出すことができました:

DataGridViewComboBoxCell dgvcmbcell = dataGridView1[1, 0] as DataGridViewComboBoxCell;
String text = dgvcmbcell.EditedFormattedValue.ToString();

これを理解する最も簡単な方法は、デバッガーを使用してdgvcmdcellオブジェクトを調べることです。これには、拡張可能なノード「ベース」があります。それを展開してそれを見るだけで、必要な情報が見つかります。

3
WozzeC

Datagridviewで現在選択されているテキストにアクセスするには、Combobox列の CurrencyManager への参照が必要です。 CurrencyManager はお金とは関係ありませんが、代わりに列とそのデータソース間のバインディングを管理します。 CurrencyManager は、コンボボックスのcurrent選択が何であるかを教えてくれます。

Tehコード:

    CurrencyManager cm = (CurrencyManager)DataGridView1.BindingContext[((System.Windows.Forms.DataGridViewComboBoxColumn)DataGridView1.Columns[0]).DataSource];

注:列をコンボボックスにキャストする必要はありません。渡した列を表示するためにキャストしました。インデックス0を使用しました。ただし、コンボボックス列の実際のインデックスであるインデックスを使用してください。

これで、通貨マネージャーを使用して、その列のデータグリッドの現在の選択にアクセスできます(これは渡した列であるため)。

    cm.Current; //returns the current selection whatever that is

したがって、私の場合、コンボボックス列のデータソースはChoiceというクラスでしたが、Choiceは次のようになります。

    public class Choice
    {
            public string Text
            {
                get;
                set;
            }
    }

Cm.Currentプロパティにアクセスすると、選択クラスのインスタンスが返されます。選択クラスのTextプロパティにアクセスして、何を確認できるようになりました。値が選択されました。あなたは明らかにこれをあなたの特定の状況に適応させなければならないでしょう。これがお役に立てば幸いです。

0
Paul Murphy