1

わかりました、私はグーグルアウトについてです。実際に機能するかどうかをテストする前にシステムを設計することで、私は間違いを犯したようです。基本的に、ユーザーが選択した色を取得するために、色ダイアログにプロンプ​​トを表示しています。私はこのコードを使用しています:

ColorDialog MyDialog = new ColorDialog();

// Keeps the user from selecting a custom color.
MyDialog.AllowFullOpen = false;
MyDialog.AnyColor = false;

// Allows the user to get help. (The default is false.)
MyDialog.ShowHelp = true;
MyDialog.SolidColorOnly = true;

// Open color selection dialog box
MyDialog.ShowDialog();

functionValue = MyDialog.Color.Name;
function = "highlight";
currentFunctionValue = MyDialog.Color.Name;

functionValue は文字列として定義され、データベースから取得された色を保持します。たとえば、「赤」。後で、これを使用して、次のコードを使用してデータグリッド内のセルまたはセルの行に色を付けます。

if (ruleFunction[j] == "highlight")
{
    Color color = Color.FromName(ruleFunctionValues[j]);
    grdTransactions.Rows[i].Cells[index].Style.BackColor = color;
}

これは、色の名前が "Red"、"Blue" などの場合は正常に機能します。ただし、一部のダイアログの選択では、"ff8000" などの値や、色の他の 16 進数表現が返されます。これは Color.FromName 関数をスローし、セルに色がないだけでなく、データグリッド セル内のテキストが台無しになっていると思います。「ff8000」などの名前で選択した色を表示させるか、colorDialogの選択画面から除外する方法はありますか?できれば、色を使って独自のカスタム ダイアログを作成したくありません。必要に応じて、データベースに保存する方法を変更することさえあります。どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1

0

返された名前を保存する代わりに、返された色オブジェクトを保存するだけです。次に、文字列値に出入りする代わりに、直接割り当てることができます。

編集: 色オブジェクトとして保存できない場合は、ToArgb の整数値を使用します。次に、FromArgb メソッドを使用してそれをロードできます。

Color c = Color.Red;
int redColor = c.ToArgb();

//...

this.BackColor = Color.FromArgb(redColor);
于 2012-06-08T00:56:07.920 に答える