C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

カラーコード(文字列)から色に変換したい [1]

[トピック内 25 記事 (21 - 25 表示)]  << 0 | 1 >>

■94233 / inTopicNo.21)  Re[19]: カラーコード(文字列)から色に変換したい
  
□投稿者/ 魔界の仮面弁士 (2645回)-(2020/03/26(Thu) 11:36:52)
2020/03/26(Thu) 11:59:09 編集(投稿者)

No94232 (あい さん) に返信
> gridRow.DataBoundItemはオブジェクト型でした。
> という事は、私の認識は違うということですね…。

プロパティの戻り値の定義を見るのではなく、
その Object 型に入っているインスタンスの型を見てください。

流石にインスタンスの型まで Object になることは
そうそう無いはず…。

デバッガのウォッチウィンドウやクイックウォッチで
確認するのが手っ取り早いですが、コードで確認するのなら
  Dim o As Object = gridRow.DataBoundItem
などとして、いったん変数に受けてから、
  Debug.WriteLine(TypeName(o))
もしくは
  Debug.WriteLine( If(o Is Nothing, "Nothing", o.GetType().FullName))
などとすれば確認できるかと思います。


> CreateDataTable()がDataTableなのでそのまま
>> Dim rowView As DataRowView = TryCast(gridRow.DataBoundItem, DataRowView)
> を使えるという事ですね(?)

そのはずですが、わざわざ質問されているという事は、
実際にはうまく稼働しなかったということなのですよね?
引用返信 編集キー/
■94238 / inTopicNo.22)  Re[20]: カラーコード(文字列)から色に変換したい
□投稿者/ あい (27回)-(2020/03/26(Thu) 13:10:56)
No94233 (魔界の仮面弁士 さん) に返信
> デバッガのウォッチウィンドウやクイックウォッチで
> 確認するのが手っ取り早いですが、コードで確認するのなら
>   Dim o As Object = gridRow.DataBoundItem
> などとして、いったん変数に受けてから、
>   Debug.WriteLine(TypeName(o))
> もしくは
>   Debug.WriteLine( If(o Is Nothing, "Nothing", o.GetType().FullName))
> などとすれば確認できるかと思います。
System.Data.DataRowViewと表示されました。

> そのはずですが、わざわざ質問されているという事は、
> 実際にはうまく稼働しなかったということなのですよね?
新規で行を追加したく、BindingSourceを加えたところ稼働しなくなってしまいました…。




引用返信 編集キー/
■94240 / inTopicNo.23)  Re[20]: カラーコード(文字列)から色に変換したい
□投稿者/ あい (28回)-(2020/03/26(Thu) 13:17:47)
No94233 (魔界の仮面弁士 さん) に返信

すみません、勘違いでした。
上手く稼働しました。お助けいただきありがとうございます。

        If e.RowIndex < 0 Then
            Return
        End If

        'データバインド先の行を取り出す
        Dim oColor As Object = Nothing
        Dim gridRow = DirectCast(sender, DataGridView).Rows(e.RowIndex)
        Dim rowView As DataRowView = TryCast(gridRow.DataBoundItem, DataRowView)
        If rowView IsNot Nothing Then
            oColor = rowView("BG_COLOR")
        End If

        If IsDBNull(oColor) Then
        Else

            'HTMLカラー表記とみなして、Color構造体に変換する
            Dim newBackColor = ColorTranslator.FromHtml(CStr(oColor))
            ''透明度指定のある色だと扱いにくいため不透明に変更する
            newBackColor = Color.FromArgb(255, newBackColor)

            '背景色セット
            If e.ColumnIndex = 3 Then
                With e.CellStyle
                    .BackColor = newBackColor
                End With
            End If
        End If

解決済み
引用返信 編集キー/
■94241 / inTopicNo.24)  Re[21]: カラーコード(文字列)から色に変換したい
□投稿者/ あい (29回)-(2020/03/26(Thu) 13:19:22)
No94240 (あい さん) に返信
If e.RowIndex < 0 Then
Return
End If

'データバインド先の行を取り出す
Dim oColor As Object = Nothing
Dim gridRow = DirectCast(sender, DataGridView).Rows(e.RowIndex)
Dim rowView As DataRowView = TryCast(gridRow.DataBoundItem, DataRowView)
If rowView IsNot Nothing Then
oColor = rowView("BG_COLOR")
End If

If IsDBNull(oColor) Then
Else

'HTMLカラー表記とみなして、Color構造体に変換する
Dim newBackColor = ColorTranslator.FromHtml(CStr(oColor))
''透明度指定のある色だと扱いにくいため不透明に変更する
newBackColor = Color.FromArgb(255, newBackColor)

'背景色セット
If e.ColumnIndex = 3 Then
With e.CellStyle> .BackColor = newBackColor
End With
End If
End If
引用返信 編集キー/
■94242 / inTopicNo.25)  Re[22]: カラーコード(文字列)から色に変換したい
□投稿者/ あい (30回)-(2020/03/26(Thu) 13:19:55)
解決し忘れです。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ