1

最初にいくつかの背景を説明します。動的な列を持つグリッドを作成する必要がありました。列数はユーザーの選択に基づいています。DataTableでは、列名に番号を追加して名前を区別し、次にそれをバインドします。ガードビュー。

次に、columns headerTextの名前を変更し、列ヘッダーからカウンター番号を削除する必要があります。次を使用してgrid.columnsをループしようとすると、グリッドにImageタイプのバインドされていない列がもう1つあります。

foreach (DataGridViewTextBoxColumn dgc in grdDistProcessing.Columns)

エラーInvalidCastExceptionが発生します:

タイプ'System.Windows.Forms.DataGridViewImageColumn'のオブジェクトをタイプ'System.Windows.Forms.DataGridViewTextBoxColumn'にキャストできません。

私もDataColumnを使用しましたが、同じエラーが発生しました。別のスレッドがDataControlFieldを使用する必要があると言っていますが、VSはそれを認識しませんでした。これはASPのものですか?または私は参照がありませんか?

助けてください。

Rgds、

4

2 に答える 2

1

varキーワードを使用できる場合(c#3以上だと思います)。

foreach (var dgc in grdDistProcessing.Columns)
{


 if(dgc is DataGridViewImageColumn)
{

   //do stuff with it.
   var tempDgc = (DataGridViewImageColumn)dgc; //cast it as needed.
   //use it

}


}
于 2012-12-12T13:00:20.020 に答える
0

おかげでscartag、あなたの解決策は魅力のように機能しています、ところで私は問題の別の解決策を探求しました、私はただプレーンなforループを使うことができます。

        `for (int i = 0; i < grdDistProcessing.Columns.Count; i++)
        {
            MessageBox.Show(grdDistProcessing.Columns[i].HeaderText);
        }`
于 2012-12-12T13:27:20.837 に答える