DataGridの列の幅をユーザーが変更できないようにするこれに関しては、「Windows Forms FAQ - How can I prevent my user from sizing columns in my datagrid?」が参考になります。この記事で紹介されている方法は、DataGridクラスの派生クラスを作成し、OnMouseMoveとOnMouseDownメソッドをオーバーライドし、マウスが列ヘッダの境界線上にあるときは何もしないようにするというものです。 この方法によるサンプルを以下に示します。このDataGridExクラスをSystem.Windows.Forms.DataGridの代わりに使用してください。 注意:新しく作成したクラスを、基のコントロールクラスの代わりに使用するという意味が分からないという方は、こちらをご覧ください。 [VB.NET] ''' <summary> ''' 列ヘッダの幅をユーザーが変更することができないDataGrid ''' </summary> Public Class DataGridEx Inherits System.Windows.Forms.DataGrid Protected Overrides Sub OnMouseMove( _ ByVal e As System.Windows.Forms.MouseEventArgs) '列ヘッダの境界線上にマウスがあるときは何もしない Dim hti As System.Windows.Forms.DataGrid.HitTestInfo = _ Me.HitTest(New System.Drawing.Point(e.X, e.Y)) If hti.Type = _ System.Windows.Forms.DataGrid.HitTestType.ColumnResize Then Return End If MyBase.OnMouseMove(e) End Sub Protected Overrides Sub OnMouseDown( _ ByVal e As System.Windows.Forms.MouseEventArgs) '列ヘッダの境界線上にマウスがあるときは何もしない Dim hti As System.Windows.Forms.DataGrid.HitTestInfo = _ Me.HitTest(New System.Drawing.Point(e.X, e.Y)) If hti.Type = _ System.Windows.Forms.DataGrid.HitTestType.ColumnResize Then Return End If MyBase.OnMouseDown(e) End Sub End Class [C#] /// <summary> /// 列ヘッダの幅をユーザーが変更することができないDataGrid /// </summary> public class DataGridEx : System.Windows.Forms.DataGrid { protected override void OnMouseMove( System.Windows.Forms.MouseEventArgs e) { //列ヘッダの境界線上にマウスがあるときは何もしない System.Windows.Forms.DataGrid.HitTestInfo hti = this.HitTest(new System.Drawing.Point(e.X, e.Y)); if(hti.Type == System.Windows.Forms.DataGrid.HitTestType.ColumnResize) { return; } base.OnMouseMove(e); } protected override void OnMouseDown( System.Windows.Forms.MouseEventArgs e) { //列ヘッダの境界線上にマウスがあるときは何もしない System.Windows.Forms.DataGrid.HitTestInfo hti = this.HitTest(new System.Drawing.Point(e.X, e.Y)); if(hti.Type == System.Windows.Forms.DataGrid.HitTestType.ColumnResize) { return; } base.OnMouseDown(e); } } また、掲示板では、列の幅が変更された時に列の幅を元に戻すという方法が紹介されています。 (この記事は、「.NETプログラミング研究 第54号」で紹介したものを基にしています。) |
|
Copyright 2002-2008 DOBON!. All rights reserved.
|