バージョン

BeforeColPosChanged イベント

1つ以上の列の移動、交換、またはサイズ設定が行われる前に発生します。
シンタックス
'宣言
 
Public Event BeforeColPosChanged As BeforeColPosChangedEventHandler
public event BeforeColPosChangedEventHandler BeforeColPosChanged
イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、BeforeColPosChangedEventArgs 型の引数を受け取りました。次の BeforeColPosChangedEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ解説
Cancel System.ComponentModel.CancelEventArgsから継承されます。 
ColumnHeaders 選択した列を表すColumnHeaderオブジェクトを返します。
ColumnPosChangedType ヘッダー位置が変更されたタイプ (読み取り専用)
解説

action 引数は、列に対して実行される操作(移動、入れ替え、サイズ変更)を示します。

columns 引数は、移動、入れ替え、またはサイズ変更される UltraGridColumn オブジェクトへの参照を取得するために使用できる SelectedCols コレクションへの参照を返します。この参照を使用して、返されたコレクションのプロパティまたはメソッドだけでなく、コレクション内のオブジェクトのプロパティまたはメソッドにもアクセスできます。ただし、対象となる列のプロパティはすべて、このイベント プロシージャー内では読み取り専用です。

cancel 引数を使用して、列が移動、入れ替え、またはサイズ変更されないようにプログラミングできます。一定の条件が満たされない限り、この引数はユーザーが列を移動、入れ替え、またはサイズ変更されないようにすることが可能です。ユーザーが列を移動、入れ替え、またはサイズ変更できないようにするには、それぞれ AllowColMoving プロパティ、AllowColSwapping プロパティ、 AllowColSizing プロパティを設定します。

このイベントは、プログラムまたはユーザーの操作によって 1 つ以上の列が移動、入れ替え、またはサイズ変更される前に発生します。UltraGridColumn の UltraGridColumn.Width プロパティを使用してサイズ変更し、ColumnHeader の ColumnHeader.SetVisiblePosition メソッドをして移動し、そして UltraGridColumn.Swap メソッドを使用して列を入れ替えます。これらのプロパティとメソッドを使用すると、このイベントが発生します。

VisiblePosition プロパティを使用して、移動または入れ替える列の現在の位置と新しい位置を確認できます。新しい位置は、列のヘッダーのプロパティから読み取ることができ、現在の位置は、適切なcolumns内の列のヘッダーのプロパティから読み取ることで判断できます。

BeforeGroupPosChanged イベントは、ひとつ以上のグループが移動、入れ替え、またはサイズ変更される前に発生します。

提供された cancel を True に設定しなければ、このイベントの後に AfterColPosChanged イベント(1つ以上の列が移動、交換、またはサイズされたに発生するイベント)が発生します。

使用例
Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinGrid
Imports System.Diagnostics

   Private Sub UltraGrid1_BeforeColPosChanged(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.BeforeColPosChangedEventArgs) Handles ultraGrid1.BeforeColPosChanged

       ' ユーザーが列を移動、切り替え、サイズ変更するときに BeforeColPosChanged を
       ' 発生しますこのイベントでは、ユーザー操作をキャンセルできます

       If PosChanged.Moved = e.PosChanged Then

           ' 1 つ以上の列が移動されています

           Dim columnList As String = ""

           Dim i As Integer
           For i = 0 To e.ColumnHeaders.Length - 1
               If i > 0 Then columnList = columnList & ", "

               columnList = columnList + e.ColumnHeaders(i).Column.Key
           Next

           Dim result As DialogResult = MessageBox.Show( _
               "You are about to move " & columnList & " columns. Do you want to continue ?", _
               "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

           If DialogResult.No = result Then
               ' 移動をキャンセルするには、イベント引数の Cancel を設定します
               e.Cancel = True
           End If

       ElseIf PosChanged.Swapped = e.PosChanged Then

           ' 2 つの列が入れ替えられています

           Dim result As DialogResult = MessageBox.Show( _
               "You are about to swap " & e.ColumnHeaders(0).Column.Key & " with " _
               + e.ColumnHeaders(1).Column.Key & " Do you want to continue ?", _
               "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

           If DialogResult.No = result Then
               ' 移動をキャンセルするには、イベント引数の Cancel を設定します
               e.Cancel = True
           End If

       ElseIf PosChanged.Sized = e.PosChanged Then

           ' 列のサイズが変更されています

           ' 列のサイズが変更されているときに、e.ColumnHeaders はサイズ変更されている
           ' 列ヘッダーを含みます
           Debug.WriteLine("User is about to resize " & e.ColumnHeaders(0).Column.Key & " colun.")

       End If

   End Sub
using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.UltraWinGrid;
using System.Diagnostics;

private void ultraGrid1_BeforeColPosChanged(object sender, Infragistics.Win.UltraWinGrid.BeforeColPosChangedEventArgs e)
{

	// ユーザーが列を移動、切り替え、またはサイズ変更するときに BeforeColPosChanged を
	// 発生しますこのイベントでは、ユーザー操作をキャンセルできます

	if ( PosChanged.Moved == e.PosChanged )
	{
		// 1 つ以上の列が移動されています

		string columnList = "";
		
		for ( int i = 0; i < e.ColumnHeaders.Length; i++ )
		{
			if ( i > 0 )
				columnList = columnList + ", ";

			columnList = columnList + e.ColumnHeaders[i].Column.Key;
		}

		DialogResult result = MessageBox.Show( 
			"You are about to move " + columnList + " columns. Do you want to continue ?",
			"Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question );

		if ( DialogResult.No == result )
		{
			// 移動をキャンセルするには、イベント引数の Cancel を設定します
			e.Cancel = true;
		}
	}
	else if ( PosChanged.Swapped == e.PosChanged )
	{
		// 2 つの列が入れ替えられています

		DialogResult result = MessageBox.Show( 
			"You are about to swap " + e.ColumnHeaders[0].Column.Key + " with " 
					+ e.ColumnHeaders[1].Column.Key + " Do you want to continue ?", 
			"Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question );

		if ( DialogResult.No == result )
		{
			// 移動をキャンセルするには、イベント引数の Cancel を設定します
			e.Cancel = true;
		}
	}
	else if ( PosChanged.Sized == e.PosChanged )
	{
		// 列のサイズが変更されています

		// 列のサイズが変更されているときに、e.ColumnHeaders はサイズ変更されている
		// 列ヘッダーを含みます
		Debug.WriteLine( "User is about to resize " + e.ColumnHeaders[0].Column.Key + " colun." );
	}

}
参照