| 色々調べてみて、解決はしていないのですが、状況を書かせてください。
下記1のパターンは、どうやら透明色というのが存在しないそうです。
2のパターンも、調べてみましたが指定列のフォーカスを禁止するのは無理みたいです。
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].Name == "Button" && (String)array[e.RowIndex] != "false")
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
array[e.RowIndex] = "false";
else if ((String)array[e.RowIndex] != "false")
{
dataGridView1[e.ColumnIndex,e.RowIndex].DefaultCellStyle.BackColor = Color.White;
}
else
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
}
}
こんな感じで、ボタンが押されたらその行を黄色にして、フラグをfalseに。
フラグがfalseでなく、ボタン列で無いセルにフォーカスを当てた場合は白に、
それ以外(ボタンが押された行でかつボタン列でないセルにフォーカスを当てた場合)は黄色
にするように書いたのですが、プロパティのselectionbackcolorの方が強いらしく、(効果の強さは セル>列でしょうから)
設定したDefaultCellStyle.BackColor が効いてくれませんでした。
恐れ入りますが解決法がありましたらよろしくお願いします。
■No7313 (グリッド さん) に返信
> よろしくお願いします。
>
> visualstudio2005でdatagridviewを使っています。
>
> grid内にボタンを行数分用意し、ボタンを押すとそのボタンのある行全体の色が変わる
> プログラムを行っています。ですが、そのボタン以外のセルを選択すると、
> 選択時のデフォルトの青い色が出てしまうため、これを出ないように2通りの
> 方法を考えました。
>
> 1つ目は、セル選択時のselectionbackcolorを透明色での解決法です。
> この場合、色の指定で、透明色を選択することは可能でしょうか?
> プロパティのDefaultCellstyleからは分からなかったので・・・
> (選択時と通常時のbackcolor,forecolorを同一にしても、そのセルのフォーカスを
> 変えない限り色が変わらなかった)
>
> 2つ目は、特定の列(この場合ボタン列以外)のフォーカスを無くし、セルを
> 選択できなくする方法です。こちらも、全体のフォーカス禁止は出来るのですが、
> 列単位での指定は分かりませんでした。
>
> 上記2つの考え方、又は他の解決法がありましたらよろしくお願いします。 |