ListView.ListViewItemSorter プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ListView.ListViewItemSorter プロパティの意味・解説 

ListView.ListViewItemSorter プロパティ

コントロールの並べ替え比較演算子を取得または設定します。

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

Public Property ListViewItemSorter As
 IComparer
Dim instance As ListView
Dim value As IComparer

value = instance.ListViewItemSorter

instance.ListViewItemSorter = value
public IComparer ListViewItemSorter { get;
 set; }
public:
property IComparer^ ListViewItemSorter {
    IComparer^ get ();
    void set (IComparer^ value);
}
/** @property */
public IComparer get_ListViewItemSorter ()

/** @property */
public void set_ListViewItemSorter (IComparer
 value)
public function get ListViewItemSorter
 () : IComparer

public function set ListViewItemSorter
 (value : IComparer)

プロパティ値
コントロールの並べ替え比較演算子を表す IComparer。

解説解説

ListViewItemSorter プロパティを使用すると、Sort メソッドが呼び出されたとき、または項目がリストに追加されたときに ListView コントロールで項目の並べ替えを実行するオブジェクトを指定できます。項目のラベル テキストが変更されても、項目は自動的に並べ替えられません。

指定するオブジェクトは、IComparer インターフェイスを実装するクラスのインスタンスである必要があります。このインターフェイスには、Comparer.Compare という名前の 1 つのメソッドがあります。

このプロパティを使用すると、詳細ビューで列見出しをクリックしたときなどにカスタムの並べ替えを実行できます。これを行うには、IComparer インターフェイスを実装し、並べ替えを行う列のインデックスを受け付けるコンストラクタを提供するクラスを作成します。次に、クリックした列のインデックスを使用してこのクラスのインスタンスを作成する ColumnClick イベントのハンドラを実装できます。ListViewItemSorter プロパティを新しいインスタンスに設定すると、指定したオブジェクトを使用して、ListView コントロールが自動的に並べ替えられます。Sort メソッドへの後続呼び出しには同じオブジェクトが使われます。

メモメモ

ListViewItemSorter プロパティの値を設定すると、Sort メソッドが自動的に呼び出されます。

使用例使用例

ListView コントロールの列がクリックされたときに手動で項目を並べ替える ListView コントロールが配置されたフォームを作成するコード例を次に示します。この例では、ListViewItem の比較を実行する System.Collections.IComparer インターフェイスを実装するクラスを ListViewItemComparer という名前で定義します。また、ListViewItemComparer のインスタンスを作成し、これを使用して ListView コントロールの ListViewItemSorter プロパティを設定します。ColumnClick イベント ハンドラでの Sort メソッド呼び出しでは、ListViewItemComparer に定義されているメソッドを使用し、クリックされた列を基準に、項目の並べ替えを実行します。

Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections


Namespace ListViewSortFormNamespace

    Public Class ListViewSortForm
        Inherits Form

        Private listView1 As ListView

        Public Sub New()
            ' Create ListView items to add to the control.
            Dim listViewItem1 As New
 ListViewItem(New String() {"Banana",
 "a", "b", "c"}, -1, Color.Empty, Color.Yellow, Nothing)
            Dim listViewItem2 As New
 ListViewItem(New String() {"Cherry",
 "v", "g", "t"}, -1, Color.Empty, Color.Red, New Font("Microsoft
 Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, CType(0, System.Byte)))
            Dim listViewItem3 As New
 ListViewItem(New String() {"Apple",
 "h", "j", "n"}, -1, Color.Empty, Color.Lime, Nothing)
            Dim listViewItem4 As New
 ListViewItem(New String() {"Pear",
 "y", "u", "i"}, -1, Color.Empty, Color.FromArgb(CType(192, System.Byte), CType(128,
 System.Byte), CType(156, System.Byte)), Nothing)

            'Initialize the ListView control and add columns to it.
            Me.listView1 = New ListView

            ' Set the initial sorting type for the ListView.
            Me.listView1.Sorting = SortOrder.None
            ' Disable automatic sorting to enable manual sorting.
            Me.listView1.View = View.Details
            ' Add columns and set their text.
            Me.listView1.Columns.Add(New ColumnHeader)
            Me.listView1.Columns(0).Text = "Column
 1"
            Me.listView1.Columns(0).Width = 100
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(1).Text = "Column 2"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(2).Text = "Column 3"
            listView1.Columns.Add(New ColumnHeader)
            listView1.Columns(3).Text = "Column 4"
            ' Suspend control logic until form is done configuring form.
            Me.SuspendLayout()
            ' Add Items to the ListView control.
            Me.listView1.Items.AddRange(New
 ListViewItem() {listViewItem1, listViewItem2, listViewItem3, listViewItem4})
            ' Set the location and size of the ListView control.
            Me.listView1.Location = New Point(10,
 10)
            Me.listView1.Name = "listView1"
            Me.listView1.Size = New Size(300,
 100)
            Me.listView1.TabIndex = 0
            ' Enable editing of the items in the ListView.
            Me.listView1.LabelEdit = True
            ' Connect the ListView.ColumnClick event to the ColumnClick
 event handler.
            AddHandler Me.listView1.ColumnClick,
 AddressOf ColumnClick

            ' Initialize the form.
            Me.ClientSize = New Size(400, 400)
            Me.Controls.AddRange(New Control()
 {Me.listView1})
            Me.Name = "ListViewSortForm"
            Me.Text = "Sorted ListView Control"
            ' Resume layout of the form.
            Me.ResumeLayout(False)
        End Sub 'New


        ' ColumnClick event handler.
        Private Sub ColumnClick(ByVal
 o As Object, ByVal e As
 ColumnClickEventArgs)
            ' Set the ListViewItemSorter property to a new ListViewItemComparer
 
            ' object. Setting this property immediately sorts the 
            ' ListView using the ListViewItemComparer object.
            Me.listView1.ListViewItemSorter = New
 ListViewItemComparer(e.Column)
        End Sub

    End Class

    ' Implements the manual sorting of items by columns.
    Class ListViewItemComparer
        Implements IComparer

        Private col As Integer

        Public Sub New()
            col = 0
        End Sub

        Public Sub New(ByVal
 column As Integer)
            col = column
        End Sub

        Public Function Compare(ByVal
 x As Object, ByVal y As
 Object) As Integer _
           Implements IComparer.Compare
            Return [String].Compare(CType(x, ListViewItem).SubItems(col).Text,
 CType(y, ListViewItem).SubItems(col).Text)
        End Function
    End Class
End Namespace
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;

namespace ListViewSortFormNamespace
{
    
   
    public class ListViewSortForm : Form
    {
        private ListView listView1;
       
        public ListViewSortForm()
        {
            // Create ListView items to add to the control.
            ListViewItem listViewItem1 = new ListViewItem(new
 string[] {"Banana","a","b","c"},
 -1, Color.Empty, Color.Yellow, null);
            ListViewItem listViewItem2 = new ListViewItem(new
 string[] {"Cherry","v","g","t"},
 -1, Color.Empty, Color.Red, new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((System.Byte)(0))));
            ListViewItem listViewItem3 = new ListViewItem(new
 string[] {"Apple","h","j","n"},
 -1, Color.Empty, Color.Lime, null);
            ListViewItem listViewItem4 = new ListViewItem(new
 string[] {"Pear","y","u","i"},
 -1, Color.Empty, Color.FromArgb(((System.Byte)(192)), ((System.Byte)(128)), ((System.Byte)(156))), null);
     
            //Initialize the ListView control and add columns to it.
            this.listView1 = new ListView();

            // Set the initial sorting type for the ListView.
            this.listView1.Sorting = SortOrder.None;
            // Disable automatic sorting to enable manual sorting.
            this.listView1.View = View.Details;
            // Add columns and set their text.
            this.listView1.Columns.Add(new
 ColumnHeader());
            this.listView1.Columns[0].Text = "Column 1";
            this.listView1.Columns[0].Width = 100;
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[1].Text = "Column 2";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[2].Text = "Column 3";
            listView1.Columns.Add(new ColumnHeader());
            listView1.Columns[3].Text = "Column 4";
            // Suspend control logic until form is done configuring
 form.
            this.SuspendLayout();
            // Add Items to the ListView control.
            this.listView1.Items.AddRange(new
 ListViewItem[] {listViewItem1,
                listViewItem2,
                listViewItem3,
                listViewItem4});
            // Set the location and size of the ListView control.
            this.listView1.Location = new Point(10,
 10);
            this.listView1.Name = "listView1";
            this.listView1.Size = new Size(300,
 100);
            this.listView1.TabIndex = 0;
            // Enable editing of the items in the ListView.
            this.listView1.LabelEdit = true;
            // Connect the ListView.ColumnClick event to the ColumnClick
 event handler.
            this.listView1.ColumnClick += new
 ColumnClickEventHandler(ColumnClick);
               
            // Initialize the form.
            this.ClientSize = new Size(400,
 400);
            this.Controls.AddRange(new Control[]
 {this.listView1});
            this.Name = "ListViewSortForm";
            this.Text = "Sorted ListView Control";
            // Resume layout of the form.
            this.ResumeLayout(false);
        }
        
    
        // ColumnClick event handler.
        private void ColumnClick(object o,
 ColumnClickEventArgs e)
        {
            // Set the ListViewItemSorter property to a new ListViewItemComparer
 
            // object. Setting this property immediately sorts the 
            // ListView using the ListViewItemComparer object.
            this.listView1.ListViewItemSorter = new
 ListViewItemComparer(e.Column);
        }

        [System.STAThreadAttribute()]
        public static void
 Main()
        {
            Application.Run(new ListViewSortForm());
        }

    }

    // Implements the manual sorting of items by columns.
    class ListViewItemComparer : IComparer
    {
        private int col;
        public ListViewItemComparer()
        {
            col = 0;
        }
        public ListViewItemComparer(int column)
        {
            col = column;
        }
        public int Compare(object x, object
 y)
        {
            return String.Compare(((ListViewItem)x).SubItems[col].Text,
 ((ListViewItem)y).SubItems[col].Text);
        }
    }

}
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Collections;

// Implements the manual sorting of items by columns.
ref class ListViewItemComparer: public IComparer
{
private:
   int col;

public:
   ListViewItemComparer()
   {
      col = 0;
   }

   ListViewItemComparer( int column )
   {
      col = column;
   }

   virtual int Compare( Object^ x, Object^ y )
   {
      return String::Compare( (dynamic_cast<ListViewItem^>(x))->SubItems[
 col ]->Text,
                              (dynamic_cast<ListViewItem^>(y))->SubItems[
 col ]->Text );
   }
};

public ref class ListViewSortForm: public
 Form
{
private:
   ListView^ listView1;

public:
   ListViewSortForm()
   {
      // Create ListView items to add to the control.
      array<String^>^temp0 = {"Banana","a","b"
,"c"};
      ListViewItem^ listViewItem1 = gcnew ListViewItem( temp0,-1,Color::Empty,Color::Yellow,nullptr
 );
      array<String^>^temp1 = {"Cherry","v","g"
,"t"};
      ListViewItem^ listViewItem2 = gcnew ListViewItem( temp1,-1,Color::Empty,Color::Red
,
                 gcnew System::Drawing::Font( "Microsoft Sans Serif",8.25F,FontStyle::Regular,GraphicsUnit::Point,0
 ) );
      array<String^>^temp2 = {"Apple","h","j"
,"n"};
      ListViewItem^ listViewItem3 = gcnew ListViewItem( temp2,-1,Color::Empty,Color::Lime,nullptr
 );
      array<String^>^temp3 = {"Pear","y","u"
,"i"};
      ListViewItem^ listViewItem4 = gcnew ListViewItem( temp3,-1,Color::Empty,Color::FromArgb(
 192, 128, 156 ),nullptr );

      //Initialize the ListView control and add columns to it.
      this->listView1 = gcnew ListView;

      // Set the initial sorting type for the ListView.
      this->listView1->Sorting = SortOrder::None;

      // Disable automatic sorting to enable manual sorting.
      this->listView1->View = View::Details;

      // Add columns and set their text.
      this->listView1->Columns->Add( gcnew ColumnHeader
 );
      this->listView1->Columns[ 0 ]->Text = "Column
 1";
      this->listView1->Columns[ 0 ]->Width = 100;
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 1 ]->Text = "Column 2";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 2 ]->Text = "Column 3";
      listView1->Columns->Add( gcnew ColumnHeader );
      listView1->Columns[ 3 ]->Text = "Column 4";

      // Suspend control logic until form is done configuring form.
      this->SuspendLayout();

      // Add Items to the ListView control.
      array<ListViewItem^>^temp4 = {listViewItem1,listViewItem2,listViewItem3
,listViewItem4};
      this->listView1->Items->AddRange( temp4 );

      // Set the location and size of the ListView control.
      this->listView1->Location = Point(10,10);
      this->listView1->Name = "listView1";
      this->listView1->Size = System::Drawing::Size( 300,
 100 );
      this->listView1->TabIndex = 0;

      // Enable editing of the items in the ListView.
      this->listView1->LabelEdit = true;

      // Connect the ListView::ColumnClick event to the ColumnClick
 event handler.
      this->listView1->ColumnClick += gcnew ColumnClickEventHandler(
 this, &ListViewSortForm::ColumnClick );

      // Initialize the form.
      this->ClientSize = System::Drawing::Size( 400, 400 );
      array<Control^>^temp5 = {this->listView1};
      this->Controls->AddRange( temp5 );
      this->Name = "ListViewSortForm";
      this->Text = "Sorted ListView Control";

      // Resume lay[Out] of* the form.
      this->ResumeLayout( false );
   }

private:

   // ColumnClick event handler.
   void ColumnClick( Object^ /*o*/, ColumnClickEventArgs^ e )
   {
      // Set the ListViewItemSorter property to a new ListViewItemComparer
 
      // object. Setting this property immediately sorts the 
      // ListView using the ListViewItemComparer object.
      this->listView1->ListViewItemSorter = gcnew ListViewItemComparer(
 e->Column );
   }
};

[System::STAThreadAttribute]
int main()
{
   Application::Run( gcnew ListViewSortForm );
}
package ListViewSortFormNamespace;

import System.*;
import System.Windows.Forms.*;
import System.Drawing.*;
import System.Collections.*;

public class ListViewSortForm extends Form
{
    private ListView listView1;

    public ListViewSortForm()
    {
        // Create ListView items to add to the control.
        ListViewItem listViewItem1 = new ListViewItem(new
 String[] { "Banana", 
            "a", "b", "c" }, -1, Color.Empty, Color.get_Yellow(),
 null);
        ListViewItem listViewItem2 = new ListViewItem(new
 String[] { "Cherry", 
            "v", "g", "t" }, -1, Color.Empty, Color.get_Red(),
 
            new Font("Microsoft Sans Serif", (float)8.25,
 FontStyle.Regular, 
            GraphicsUnit.Point, (ubyte)0));
        ListViewItem listViewItem3 = new ListViewItem(new
 String[] { "Apple", 
            "h", "j", "n" }, -1, Color.Empty, Color.get_Lime(),
 null);
        ListViewItem listViewItem4 = new ListViewItem(new
 String[] { "Pear", 
            "y", "u", "i" }, -1, Color.Empty, Color.FromArgb(192,
 128, 156), 
            null);

        //Initialize the ListView control and add columns to it.
        this.listView1 = new ListView();

        // Set the initial sorting type for the ListView.
        this.listView1.set_Sorting(SortOrder.None);

        // Disable automatic sorting to enable manual sorting.
        this.listView1.set_View(View.Details);

        // Add columns and set their text.
        this.listView1.get_Columns().Add(new
 ColumnHeader());
        this.listView1.get_Columns().get_Item(0).set_Text("Column
 1");
        this.listView1.get_Columns().get_Item(0).set_Width(100);
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(1).set_Text("Column 2");
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(2).set_Text("Column 3");
        listView1.get_Columns().Add(new ColumnHeader());
        listView1.get_Columns().get_Item(3).set_Text("Column 4");

        // Suspend control logic until form is done configuring form.
        this.SuspendLayout();

        // Add Items to the ListView control.
        this.listView1.get_Items().AddRange(new
 ListViewItem[] { listViewItem1,
            listViewItem2, listViewItem3, listViewItem4 });

        // Set the location and size of the ListView control.
        this.listView1.set_Location(new Point(10,
 10));
        this.listView1.set_Name("listView1");
        this.listView1.set_Size(new Size(300,
 100));
        this.listView1.set_TabIndex(0);

        // Enable editing of the items in the ListView.
        this.listView1.set_LabelEdit(true);

        // Connect the ListView.ColumnClick event to the 
        // ColumnClick event handler.
        this.listView1.add_ColumnClick(new
 ColumnClickEventHandler(ColumnClick));

        // Initialize the form.
        this.set_ClientSize(new Size(400, 400));
        this.get_Controls().AddRange(new Control[]
 { this.listView1 });
        this.set_Name("ListViewSortForm");
        this.set_Text("Sorted ListView Control");

        // Resume layout of the form.
        this.ResumeLayout(false);
    } //ListViewSortForm

    // ColumnClick event handler.
    private void ColumnClick(Object o, ColumnClickEventArgs
 e)
    {
        // Set the ListViewItemSorter property to a new ListViewItemComparer
 
        // object. Setting this property immediately sorts the 
        // ListView using the ListViewItemComparer object.
        this.listView1.set_ListViewItemSorter(
            new ListViewItemComparer(e.get_Column()));
    } //ColumnClick

    /** @attribute System.STAThreadAttribute()
     */
    public static void main(String[]
 args)
    {
        Application.Run(new ListViewSortForm());
    } //main
} //ListViewSortForm

// Implements the manual sorting of items by columns.
class ListViewItemComparer implements IComparer
{
    private int col;

    public ListViewItemComparer()
    {
        col = 0;
    } //ListViewItemComparer

    public ListViewItemComparer(int column)
    {
        col = column;
    } //ListViewItemComparer

    public int Compare(Object x, Object y)
    {
        return String.Compare(
            ((ListViewItem)x).get_SubItems().get_Item(col).get_Text(),
            ((ListViewItem)y).get_SubItems().get_Item(col).get_Text());
    } //Compare
} //ListViewItemComparer
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

ListView.ListViewItemSorter プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ListView.ListViewItemSorter プロパティのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS