私は、DataGridViewTextBoxCellとDataGridViewCheckBoxCellを継承したさまざまなセルタイプのカスタムDataGridViewを持っています。DataGridViewTextBoxCellのホストチェックボックス
これらの各カスタムセルには、CellColourと呼ばれる背景色(グリッドの一部の機能に必要)を設定するプロパティがあります。
簡単にするために、我々は、カスタムセルのうちの2つを取るよ:
はpublic class FormGridTextBoxCell : DataGridViewTextBoxCell
{
public Color CellColour { get; set; }
...
}
public class FormGridCheckBoxCell : DataGridViewCheckBoxCell
{
public Color CellColour { get; set; }
...
}
問題:
これは、すべての時間が、私は両方の列が含まれているグリッドの行のためのCellColourプロパティを設定することを意味し私は次のことを行う必要があり(それぞれ、前述のカスタム細胞型のCellTemplaesを持っている)FormGridTextBoxColumnとFormGridCheckBoxColumnを入力します。
if(CellToChange is FormGridTextBoxCell)
{
((FormGridTextBoxCell)CellToChange).CellColour = Color.Red;
}
else if (CellToChange is FormGridCheckBoxCell)
{
((FormGridCheckBoxCell)CellToChange).CellColour = Color.Red;
}
3種類以上の細胞型がある場合、これは困難になってきており、これを行うより良い方法があると確信しています。求め
SOLUTION:
私は私の頭の中でそれを持って、私はDataGridViewTextBoxCellから継承単一のクラスを作成し、順番にカスタムセルタイプを持つことができる場合、このクラスから継承していること:
public class FormGridCell : DataGridViewTextBoxCell
{
public Color CellColour { get; set }
}
public class FormGridTextBoxCell : FormGridCell
{
...
}
public class FormGridCheckBoxCell : FormGridCell
{
...
}
私は、唯一の次の操作を実行する必要があります。
if(CellToChange is FormGridCell)
{
((FormGridCell)CellToChange).CellColour = Color.Red;
...
}
(彼らはすべてのFormGridCellから継承されますよう)に関係なく、どのように多くのカスタム細胞タイプのがあります。特定のコントロール駆動型セルでは、Windowsフォームコントロールが実装されます。
しかしこれはDataGridViewTextBoxCellのCheckBoxをホスティングしているカスタムのDateTimeピッカーのために働くHost Controls in Windows Forms DataGridView Cells
は、魚の異なるやかんです:私はこの記事で、次の試してみました
:これが問題になる理由
セルの値を制御するためのさまざまなプロパティがあるためです。
DataGridViewTextBoxCellで開始し、継承したクラスのデータ型を事前定義済みのデータ型に変更する方が簡単な場合は、私は提案に公開しますが、コアの問題では、 DataGridViewTextBoxCell。
それはまさに私が後にしたものです。どうもありがとう!そして、はい、この問題の根本原因は、基本的に単一の基本クラスから継承できることだけでした。 –