作成日: 2017/08/29 最終更新日: 2017/08/29
文書種別
制限事項
詳細
GcStylePlusコンポーネントを使用してコントロールの外観を設定した後、コントロールのプロパティで直接にスタイル設定を変更しても、GcStylePlusで設定したスタイルに戻ってしまいます。
例えば、GcStylePlusでActiveStyleを設定した後テキストコントロールのBackColorプロパティを設定すると、
テキストコントロールからフォーカスが外れるタイミングでGcStylePlusで設定した元の背景色に戻ってしまいます。
これは製品の制限事項です。GcStylePlusは、動的に変更されたコントロールのスタイルを反映することはできません。
例えば、GcStylePlusでActiveStyleを設定した後テキストコントロールのBackColorプロパティを設定すると、
テキストコントロールからフォーカスが外れるタイミングでGcStylePlusで設定した元の背景色に戻ってしまいます。
これは製品の制限事項です。GcStylePlusは、動的に変更されたコントロールのスタイルを反映することはできません。
回避方法
本制限事項を回避するには、変更するスタイル設定を独自に保存して、GcStylePlusのStyleChangedイベントで明示的にコントロールへ設定してください。
次のサンプルコードでは、フォームに2つのTextBoxコントロールとGcStylePlusを配置し、ActiveStyleであらかじめ背景色を設定していることを仮定します。
[Visual Basic]
Imports GrapeCity.Win.Components
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 背景色の変更
TextBox1.BackColor = Color.Red
TextBox2.BackColor = Color.Red
' 変更後のスタイルの保存
TextBox1.Tag = TextBox1.BackColor
TextBox2.Tag = TextBox2.BackColor
End Sub
Private Sub GcStylePlus1_StyleChanged(sender As Object, e As StyleChangedEventArgs) Handles GcStylePlus1.StyleChanged
' 変更後のスタイルの設定
If e.ThemeState = GrapeCity.Win.Common.ThemeStates.Normal Then
If TypeOf e.Control.Tag Is Color Then
e.Control.BackColor = e.Control.Tag
End If
End If
End Sub
[C#]
private void button1_Click(object sender, EventArgs e)
{
this.TextBox1.BackColor = Color.Gray;
this.TextBox2.BackColor = Color.Gray;
// 変更後のスタイルの保存
this.TextBox1.Tag = TextBox1.BackColor;
this.TextBox2.Tag = TextBox2.BackColor;
}
private void gcStylePlus1_StyleChanged(object sender, GrapeCity.Win.Components.StyleChangedEventArgs e)
{
// 変更後のスタイルの設定
if (e.ThemeState == GrapeCity.Win.Common.ThemeStates.Normal)
{
if (e.Control.Tag is Color)
{
Color myColor = (Color)e.Control.Tag;
e.Control.BackColor = myColor;
}
}
}
次のサンプルコードでは、フォームに2つのTextBoxコントロールとGcStylePlusを配置し、ActiveStyleであらかじめ背景色を設定していることを仮定します。
[Visual Basic]
Imports GrapeCity.Win.Components
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' 背景色の変更
TextBox1.BackColor = Color.Red
TextBox2.BackColor = Color.Red
' 変更後のスタイルの保存
TextBox1.Tag = TextBox1.BackColor
TextBox2.Tag = TextBox2.BackColor
End Sub
Private Sub GcStylePlus1_StyleChanged(sender As Object, e As StyleChangedEventArgs) Handles GcStylePlus1.StyleChanged
' 変更後のスタイルの設定
If e.ThemeState = GrapeCity.Win.Common.ThemeStates.Normal Then
If TypeOf e.Control.Tag Is Color Then
e.Control.BackColor = e.Control.Tag
End If
End If
End Sub
[C#]
private void button1_Click(object sender, EventArgs e)
{
this.TextBox1.BackColor = Color.Gray;
this.TextBox2.BackColor = Color.Gray;
// 変更後のスタイルの保存
this.TextBox1.Tag = TextBox1.BackColor;
this.TextBox2.Tag = TextBox2.BackColor;
}
private void gcStylePlus1_StyleChanged(object sender, GrapeCity.Win.Components.StyleChangedEventArgs e)
{
// 変更後のスタイルの設定
if (e.ThemeState == GrapeCity.Win.Common.ThemeStates.Normal)
{
if (e.Control.Tag is Color)
{
Color myColor = (Color)e.Control.Tag;
e.Control.BackColor = myColor;
}
}
}
旧文書番号
41256