2

現在の行の値を取得できません。どのようにできるのか?

bindingSource1.DataSource = LData; (LData is Generic List)
public DataRow currentRow
    {
        get
        {
            int position = this.BindingContext[bindingSource1].Position;
            if (position > -1)
            {
                return ((DataRowView)bindingSource1.Current).Row;
            }
            else
            {
                return null;
            }
        }
    }

で現在の行を取得できません:

    MessageBox.Show(currentRow["NAME"].ToString());

エラーを取得: InvalidCastException、どうすればよいですか? ありがとう。

4

1 に答える 1

6

ではなく に設定している場合DataRow、オブジェクトが含まれているとは期待できません。あなたの場合、ジェネリック型のインスタンスが含まれます。bindingSource1.CurrentDataSourceList<T>DataTablebindingSource1.Current

次のように LData を初期化していると思います。

LData = new List<T>();

プロパティは次のようになります。

public T currentRow
{
    get
    {
        int position = this.BindingContext[bindingSource1].Position;
        if (position > -1)
        {
            return (T)bindingSource1.Current;
        }
        else
        {
            return null;
        }
    }
}

そして、次のように値を読み取ることができます (Nameが のプロパティであると仮定しますT):

MessageBox.Show(currentRow.Name);

もちろんテストされていませんが、このようなものはうまくいくはずです。Current次の行でデバッガーを使用して、プロパティの内容が実際にどのようなものかを確認します。

return (T)bindingSource1.Current;
于 2012-07-07T15:19:59.673 に答える