2

コントロールをループしてDataGridView行を動的に追加しています。BackColor次のロジックに基づいて、各セルのプロパティを設定しています。

if (bidVolume != null)
{
    this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.Green;
}
else
{
    this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.FromArgb(150, Color.Green);
}

これは問題を引き起こしています。色が視覚的に適切に設定されておらず、サイズを変更するDataGridViewと次のようになります。

ここに画像の説明を入力

たとえば、使用せずに使用するColor.FromArgbと、すべて正常に動作します..Color.Red

BackColorを使用してセルを設定することは可能Color.FromArgbですか?

ありがとう

4

3 に答える 3

4

は透明色を受け付けないColor.FromArgbため使用できません。DataGridViewこれはおそらく、セルと DataGridView が透過的でない (デフォルト) ためです。あなたが探しているのは、おそらくこれです。BackColor白と緑の間の色に設定したい場合があります。

私が間違っていて、これがあなたの望むものではない場合は、セルにアルファチャンネルが必要であることを説明してください.

于 2013-06-16T10:10:44.287 に答える
1

理由はわかりました。これを克服するには、保護されたSetStyleメソッドを使用して動作をオーバーライドします。何かのようなもの:

class MyDgv : DataGridView
{
    public MyDgv()
    {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); //this is the key

        //and now you can do what you want.
        this.Rows[this.RowCount - 1].Cells[1].Style.BackColor = Color.FromArgb(150, Color.Green);
    }
}

ドキュメントから:

System.Windows.Forms.ControlStyles の SupportsTransparentBackColor 値が true に設定されていない限り、BackColor プロパティは透明色をサポートしません。

BackColor プロパティはアンビエント プロパティです。アンビエント プロパティは、設定されていない場合、親コントロールから取得されるコントロール プロパティです。たとえば、Button はデフォルトで親 Form と同じ BackColor を持ちます。アンビエント プロパティの詳細については、AmbientProperties クラスまたは Control クラスの概要を参照してください。

于 2013-06-16T10:25:14.623 に答える
0

古い質問ですが、同じ問題に遭遇しました。最も簡単な解決策はColor.FromArgb()、コンストラクターから alpha パラメーターを除外するオーバーライドを使用することです。アルファ透明度を指定しない限り、色は完全に機能します。

public static Color SeaFoamGreen = Color.FromArgb(20, 125, 115); 
于 2020-06-02T18:46:00.517 に答える