ModuleListPage.GetItemComparer(ColumnHeader, SortOrder) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
2 つの列を比較する オブジェクトを取得します。
protected:
virtual System::Collections::IComparer ^ GetItemComparer(System::Windows::Forms::ColumnHeader ^ sortColumn, System::Windows::Forms::SortOrder sortOrder);
protected virtual System.Collections.IComparer GetItemComparer (System.Windows.Forms.ColumnHeader sortColumn, System.Windows.Forms.SortOrder sortOrder);
abstract member GetItemComparer : System.Windows.Forms.ColumnHeader * System.Windows.Forms.SortOrder -> System.Collections.IComparer
override this.GetItemComparer : System.Windows.Forms.ColumnHeader * System.Windows.Forms.SortOrder -> System.Collections.IComparer
パラメーター
- sortColumn
- ColumnHeader
行の並べ替えに使用される列。
- sortOrder
- SortOrder
並べ替え順序。
戻り値
インターフェイスから IComparer 派生した オブジェクト。
例
GetItemComparer メソッドを実装する例を次に示します。
protected override IComparer GetItemComparer(
ColumnHeader sortColumn, SortOrder sortOrder) {
if (sortColumn == _keyHeader) {
return new
MyCntEntryItemComparer(sortOrder);
}
return base.GetItemComparer(sortColumn, sortOrder);
}
internal class MyCntEntryItemComparer : IComparer {
private SortOrder order;
public MyCntEntryItemComparer() {
order = SortOrder.Ascending;
}
public MyCntEntryItemComparer(SortOrder sortOrder) {
order = sortOrder;
}
public int Compare(Object x, Object y) {
try {
MyEntryItem entryX = (MyEntryItem)x;
MyEntryItem entryY = (MyEntryItem)y;
if (order == SortOrder.Ascending) {
return (entryX.Entry.UserCount >
entryY.Entry.UserCount ? 1 : 0);
} else {
return (entryX.Entry.UserCount <
entryY.Entry.UserCount ? 1 : 0);
}
} catch (System.Exception e) {
Trace.WriteLine(e.Message);
Trace.WriteLine(e.StackTrace);
return 0;
}
}
}
internal sealed class MyEntryInfo {
private PropertyBag _bag;
enum ext { eName, eUserCount };
public MyEntryInfo(PropertyBag bag) {
_bag = bag;
}
public string Name {
get {
return (string)_bag[(int)ext.eName];
}
set {
_bag[(int)ext.eName] = value;
}
}
public int UserCount {
get {
object o = _bag[(int)ext.eUserCount];
if (o == null) {
return 0;
}
return (int)o;
}
set {
_bag[(int)ext.eUserCount] = value;
}
}
}
internal class MyEntryItem : ListViewItem {
private MyEntryInfo _entry;
public MyEntryItem(MyEntryInfo entry)
: base(entry.Name, 0) {
_entry = entry;
this.SubItems.Add(new ListViewSubItem(
this, "Local Count"));
}
public MyEntryInfo Entry {
get {
return _entry;
}
}
}
注釈
返されるオブジェクトは、並べ替え列の 2 つのオブジェクトと等価性を比較します。