DOBON.NET DOBON.NETプログラミング掲示板過去ログ

カラムヘッダの固定に関して

分類:[.NET]

2004/01/06(Tue) 15:55:02 編集(投稿者)

はじめまして。

データグリッドでカラムヘッダをマウスでつかんで
左右に動かなくしたいのですがいい方法はあるでしょうか?
宜しければ、お知恵をお貸しください。
■No2044に返信(咲くらさんの記事)

幅のことと捉えましたが・・・(そういうことですか?)

幅の変化イベントを処理すればいいだけなので、どこかで幅を覚えておいて、
それと異なる場合だけ戻すようにすれば可能です。

以下は例です。(わざわざコレクション使わないでもいいですし。)

[1]
  '名前で引ける形で幅を覚えておくためのコレクション
  Private colColle As New Collection
  
[2]
  '幅変更を感知するイベント処理
  Sub ts_widthChanged(ByVal sender As Object, ByVal e As EventArgs)
    Try
      Dim cs As DataGridColumnStyle
      cs = sender
      '自分の定義と異なる場合に調整する
      If cs.Width <> colColle(cs.MappingName) Then
        cs.Width = colColle(cs.MappingName)
      End If
    Catch ex As Exception
    End Try
  End Sub

[3]
  スタイルの初期化時の処理に●を追加

    '・・・
    Dim tstyle As New DataGridTableStyle
    Dim cstyle As DataGridTextBoxColumn

    cstyle = New DataGridTextBoxColumn
    With cstyle
      .MappingName = "CODE"
      .HeaderText = "CD"
      .Width = 100
      .TextBox.ImeMode = ImeMode.Disable
      colColle.Add(.Width, .MappingName)    '●
      AddHandler .WidthChanged, AddressOf ts_widthChanged    '●
    End With
    tstyle.GridColumnStyles.Add(cstyle)

    cstyle = New DataGridTextBoxColumn
    With cstyle
      .MappingName = "NAME"
      .HeaderText = "NAME"
      .Width = 200
      .TextBox.ImeMode = ImeMode.Hiragana
      colColle.Add(.Width, .MappingName)    '●
      AddHandler .WidthChanged, AddressOf ts_widthChanged    '●
    End With
    tstyle.GridColumnStyles.Add(cstyle)
    '・・・

ざっとこんな感じですね。一応・・・。
2004/01/06(Tue) 17:50:25 編集(投稿者)

> 幅のことと捉えましたが・・・(そういうことですか?)
はい、ご指摘の通りです。


自分の望む結果得ることができました。
こど。さん、
本当にありがとうございました。m(_ _)m
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板