次の方法で共有


ListView.AfterLabelEdit イベント

項目のラベルがユーザーによって編集されると発生します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

構文

'宣言
Public Event AfterLabelEdit As LabelEditEventHandler
'使用
Dim instance As ListView
Dim handler As LabelEditEventHandler

AddHandler instance.AfterLabelEdit, handler
public event LabelEditEventHandler AfterLabelEdit
public:
event LabelEditEventHandler^ AfterLabelEdit {
    void add (LabelEditEventHandler^ value);
    void remove (LabelEditEventHandler^ value);
}
/** @event */
public void add_AfterLabelEdit (LabelEditEventHandler value)

/** @event */
public void remove_AfterLabelEdit (LabelEditEventHandler value)
JScript では、イベントは使用できますが、新規に宣言することはできません。

解説

AfterLabelEdit イベントは、ユーザーが項目のテキストを変更し終わったときに発生します。ユーザーが項目に入力した新しい文字列はイベントに渡されますが、イベント ハンドラで変更が拒否される場合があります。イベント ハンドラで変更が拒否された場合、テキストはユーザーが項目の編集を開始する前の状態に戻ります。

注意

ラベルの編集がコミットされる前に ListView.AfterLabelEdit イベントが実行されるため、このイベントのハンドラで ListView.Sort メソッドを呼び出すと、元の値を使用して項目を並べ替えます。

AfterLabelEdit イベントを発生させるためには、ListView コントロールの LabelEdit プロパティが true に設定されている必要があります。

BeforeLabelEdit イベントのイベント ハンドラを作成すると、ユーザーが項目のテキストを編集する前にタスクを実行できます。

イベント処理の詳細については、「イベントの利用」を参照してください。

使用例

AfterLabelEdit イベントを使用して、新しく編集するラベルの文字をアルファベットに制限する方法を次のコード例に示します。この例では、ASCIIEncoding クラスを使用して、新しいレベルの各文字の ASCII 文字コードを取得しています。この文字が数字を表す ASCII コードの場合、新しいラベルは項目には適用できません。この例では、フォーム上に ListView コントロールが作成され、そのコントロールに項目が追加されている必要があります。また、AfterLabelEdit イベントが、この例で定義されているイベント ハンドラに接続されている必要もあります。ASCIIEncoding クラスを使用するには、ファイルに System.Text 名前空間が含まれている必要があります。

Private Sub MyListView_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.LabelEditEventArgs) Handles listView1.AfterLabelEdit

   ' Determine if label is changed by checking to see if it is equal to Nothing.
   If e.Label = Nothing Then
      Return
   End If
   ' ASCIIEncoding is used to determine if a number character has been entered.
   Dim AE As New ASCIIEncoding()
   ' Convert the new label to a character array.
   Dim temp As Char() = e.Label.ToCharArray()

   ' Check each character in the new label to determine if it is a number.
   Dim x As Integer
   For x = 0 To temp.Length - 1
      ' Encode the character from the character array to its ASCII code.
      Dim bc As Byte() = AE.GetBytes(temp(x).ToString())

      ' Determine if the ASCII code is within the valid range of numerical values.
      If bc(0) > 47 And bc(0) < 58 Then
         ' Cancel the event and return the lable to its original state.
         e.CancelEdit = True
         ' Display a MessageBox alerting the user that numbers are not allowed.
         MessageBox.Show("The text for the item cannot contain numerical values.")
         ' Break out of the loop and exit.
         Return
      End If
   Next x
End Sub
private void MyListView_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e)
{
 
   // Determine if label is changed by checking for null.
   if (e.Label == null)
      return;

   // ASCIIEncoding is used to determine if a number character has been entered.
   ASCIIEncoding AE = new ASCIIEncoding();
   // Convert the new label to a character array.
   char[] temp = e.Label.ToCharArray();

   // Check each character in the new label to determine if it is a number.
   for(int x=0; x < temp.Length; x++)
   {
      // Encode the character from the character array to its ASCII code.
      byte[] bc = AE.GetBytes(temp[x].ToString());
   
      // Determine if the ASCII code is within the valid range of numerical values.
      if(bc[0] > 47 && bc[0] < 58)
      {
         // Cancel the event and return the lable to its original state.
         e.CancelEdit = true;
         // Display a MessageBox alerting the user that numbers are not allowed.
         MessageBox.Show ("The text for the item cannot contain numerical values.");
         // Break out of the loop and exit.
         return;
      }
   }
}
private:
   void MyListView_AfterLabelEdit( Object^ /*sender*/, System::Windows::Forms::LabelEditEventArgs^ e )
   {
      // Determine if label is changed by checking for 0.
      if ( e->Label == nullptr )
               return;

      // ASCIIEncoding is used to determine if a number character has been entered.
      ASCIIEncoding^ AE = gcnew ASCIIEncoding;

      // Convert the new label to a character array.
      array<Char>^temp = e->Label->ToCharArray();

      // Check each character in the new label to determine if it is a number.
      for ( int x = 0; x < temp->Length; x++ )
      {
         // Encode the character from the character array to its ASCII code.
         array<Byte>^bc = AE->GetBytes( temp[ x ].ToString() );

         // Determine if the ASCII code is within the valid range of numerical values.
         if ( bc[ 0 ] > 47 && bc[ 0 ] < 58 )
         {
            // Cancel the event and return the lable to its original state.
            e->CancelEdit = true;

            // Display a MessageBox alerting the user that numbers are not allowed.
            MessageBox::Show( "The text for the item cannot contain numerical values." );

            // Break out of the loop and exit.
            return;
         }
      }
   }
private void MyListView_AfterLabelEdit(Object sender, 
    System.Windows.Forms.LabelEditEventArgs e)
{
    // Determine if label is changed by checking for null.
    if (e.get_Label() == null) {
        return;
    }

    // ASCIIEncoding is used to determine 
    // if a number character has been entered.
    ASCIIEncoding ae = new ASCIIEncoding();

    // Convert the new label to a character array.
    char temp[] = e.get_Label().ToCharArray();

    // Check each character in the new label to determine if it is a number.
    for (int x = 0; x < temp.get_Length(); x++) {
        // Encode the character from the character array to its ASCII code.
        ubyte bc[] = ae.GetBytes(temp.get_Item(x).ToString());

        // Determine if the ASCII code is within the valid range 
        // of numerical values.
        if (Convert.ToInt32(bc.get_Item(0)) > 47 
            && Convert.ToInt32(bc.get_Item(0)) < 58) {
            // Cancel the event and return the lable to its original state.
            e.set_CancelEdit(true);

            // Display a MessageBox alerting the user that 
            // numbers are not allowed.
            MessageBox.Show("The text for the item cannot contain "
                + "numerical values.");

            // Break out of the loop and exit.
            return;
        }
    }
} //MyListView_AfterLabelEdit

プラットフォーム

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 2.0、1.1、1.0

参照

関連項目

ListView クラス
ListView メンバ
System.Windows.Forms 名前空間
OnAfterLabelEdit
BeforeLabelEdit
LabelEditEventHandler デリゲート
ListView.LabelEdit プロパティ