- 題名: カラムヘッダの固定に関して
- 日時: 2004/01/06 15:41:23
- ID: 2044
- この記事の返信元: - (なし)
 
- この記事への返信: - [2045] Re[1]: カラムヘッダの固定に関して2004/01/06 16:57:53
 
- ツリーを表示
■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) 15:55:02 編集(投稿者)
はじめまして。
データグリッドでカラムヘッダをマウスでつかんで
左右に動かなくしたいのですがいい方法はあるでしょうか?
宜しければ、お知恵をお貸しください。