//xがyより小さいときはマイナスの数、大きいときはプラスの数、 //同じときは0を返す public int Compare(object x, object y) { if (_order == SortOrder.None) { //並び替えない時 return(0); } int result = 0; //ListViewItemの取得 ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; //並べ替えの方法を決定 if (_columnModes != null && _columnModes.Length > _column) { _mode = _columnModes[_column]; } //並び替えの方法別に、xとyを比較する switch (_mode) { case ComparerMode.String: //文字列をとして比較 result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: //Int32に変換して比較 //.NET Framework 2.0からは、TryParseメソッドを使うこともできる int itemX, itemY; if (int.TryParse(itemx.SubItems[_column].Text, out itemX) && int.TryParse(itemy.SubItems[_column].Text, out itemY)) { result = itemX.CompareTo(itemY); } else { result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); } break; case ComparerMode.DateTime: //DateTimeに変換して比較 //.NET Framework 2.0からは、TryParseメソッドを使うこともできる result = DateTime.Compare( DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } //降順の時は結果を+-逆にする if (_order == SortOrder.Descending) { result = -result; } //結果を返す return(result); }
/// <summary> /// ListViewItemComparerクラスのコンストラクタ /// </summary> /// <param name="col">並び替える列の番号</param> /// <param name="ord">昇順か降順か</param> /// <param name="cmod">並び替えの方法</param> public ListViewItemComparer( int col, SortOrder ord, ComparerMode cmod) { _column = col; _order = ord; _mode = cmod; }
/// <summary> /// ソート対象のフィールドとソート順を設定し、ソートを実行します /// </summary> public void SetSortMode(ComparerMode mode, SortOrder sortOrder) { this.SortMode = mode; this.SortOrder = sortOrder; this.ApplySortMode(); }
/// <summary> /// 指定したソートモードとソートオーダーに従い使用する比較関数のアドレスを返す /// </summary> /// <param name="sortMode"></param> /// <param name="sortOrder"></param> /// <returns></returns> public Comparison <long> GetCompareMethod(ComparerMode sortMode, SortOrder sortOrder) { Comparison <long> method = null; if (sortOrder == SortOrder.Ascending) { // 昇順 switch (sortMode) { case ComparerMode.Data: method = Compare_ModeData_Ascending; break; case ComparerMode.Id: method = Compare_ModeId_Ascending; break; case ComparerMode.Name: method = Compare_ModeName_Ascending; break; case ComparerMode.Nickname: method = Compare_ModeNickName_Ascending; break; case ComparerMode.Source: method = Compare_ModeSource_Ascending; break; } } else { // 降順 switch (sortMode) { case ComparerMode.Data: method = Compare_ModeData_Descending; break; case ComparerMode.Id: method = Compare_ModeId_Descending; break; case ComparerMode.Name: method = Compare_ModeName_Descending; break; case ComparerMode.Nickname: method = Compare_ModeNickName_Descending; break; case ComparerMode.Source: method = Compare_ModeSource_Descending; break; } } return(method); }
public void SetSortMode(ComparerMode mode, SortOrder sortOrder) { this.SortMode = mode; this.SortOrder = sortOrder; foreach (var tab in this._tabs.Values) { tab.SetSortMode(mode, sortOrder); } }
//xがyより小さいときはマイナスの数、大きいときはプラスの数、 //同じときは0を返す public int Compare(object x, object y) { int result = 0; //ListViewItemの取得 ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; //並べ替えの方法を決定 if (_columnModes != null && _columnModes.Length > _column) { _mode = _columnModes[_column]; } //並び替えの方法別に、xとyを比較する switch (_mode) { case ComparerMode.String: result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: result = int.Parse(itemx.SubItems[_column].Text) - int.Parse(itemy.SubItems[_column].Text); break; case ComparerMode.Decimal: result = decimal.Compare(decimal.Parse(itemx.SubItems[_column].Text), decimal.Parse(itemy.SubItems[_column].Text)); break; case ComparerMode.DateTime: result = DateTime.Compare( DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } //降順の時は結果を+-逆にする if (_order == SortOrder.Descending) { result = -result; } else if (_order == SortOrder.None) { result = 0; } //結果を返す return(result); }
// xがyより小さいときはマイナスの数,大きいときはプラスの数,同じときは0を返す public int Compare(object x, object y) { int result = 0; // ListViewItemの取得 ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; // 並べ替えの方法を決定 if (mColumnModes != null && mColumnModes.Length > mColumn) { mComparerMode = mColumnModes[mColumn]; } // 並び替えの方法別に,xとyを比較する switch (mComparerMode) { case ComparerMode.String: result = string.Compare(itemx.SubItems[mColumn].Text, itemy.SubItems[mColumn].Text); break; case ComparerMode.Integer: int ia, ib; int.TryParse(itemx.SubItems[mColumn].Text, out ia); int.TryParse(itemy.SubItems[mColumn].Text, out ib); result = ia.CompareTo(ib); break; case ComparerMode.Double: double da, db; double.TryParse(itemx.SubItems[mColumn].Text, out da); double.TryParse(itemy.SubItems[mColumn].Text, out db); result = da.CompareTo(db); break; case ComparerMode.DateTime: result = DateTime.Compare( DateTime.Parse(itemx.SubItems[mColumn].Text), DateTime.Parse(itemy.SubItems[mColumn].Text)); break; } if (mSortOrder == SortOrder.Descending) { result = -result; } return(result); }
/// <summary> /// 起動時に一度だけ呼ばれる /// </summary> public ListViewItemComparer() { string TAG = "[ListViewItemComparer・ListViewItemComparer]"; string dbMsg = TAG; try { _column = 0; _order = SortOrder.Ascending; _mode = ComparerMode.String; rootForm.MyLog(dbMsg); } catch (Exception er) { dbMsg += "<<以降でエラー発生>>" + er.Message; rootForm.MyLog(dbMsg); } }
public int Compare(object x, object y) { int result = 0; ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; if (_columnModes != null && _columnModes.Length > _column) { _mode = _columnModes[_column]; } switch (_mode) { case ComparerMode.String: result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: result = int.Parse(itemx.SubItems[_column].Text) - int.Parse(itemy.SubItems[_column].Text); break; case ComparerMode.DateTime: result = DateTime.Compare( DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } if (_order == SortOrder.Descending) { result = -result; } else if (_order == SortOrder.None) { result = 0; } return(result); }
/// <summary> /// ソート /// </summary> /// <param name="x">ListViewItem</param> /// <param name="y">ListViewItem</param> public int Compare(object x, object y) { int result = 0; ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; if (_order == SortOrder.None) { return(0); } // ソート方法決定 if (_columnModes != null && _columnModes.Length > _column) { _mode = _columnModes[_column]; } // ソート方法別にxとyを比較 switch (_mode) { case ComparerMode.String: // 文字列 result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: // 数値 result = int.Parse(itemx.SubItems[_column].Text).CompareTo(int.Parse(itemy.SubItems[_column].Text)); break; case ComparerMode.DateTime: // 日付 result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } // 降順時は結果を+-逆にする return((_order == SortOrder.Descending) ? -result : result); }
public SortOrder ToggleSortOrder(ComparerMode sortMode) { var sortOrder = this.SortOrder; if (this.SortMode == sortMode) { if (sortOrder == SortOrder.Ascending) { sortOrder = SortOrder.Descending; } else { sortOrder = SortOrder.Ascending; } } else { sortOrder = SortOrder.Ascending; } this.SetSortMode(sortMode, sortOrder); return(this.SortOrder); }
//コンストラクタ public ListViewItemComparer(int col, SortOrder order, ComparerMode mode) { this._column = col; this.Order = order; this.Mode = mode; }
public ListViewItemComparer() { this._column = 0; this._order = SortOrder.Ascending; this._mode = ComparerMode.STRING; }
/// <summary> /// ListViewItemComparerクラスのコンストラクタ /// </summary> /// <param name="col">並び替える列番号</param> /// <param name="ord">昇順か降順か</param> /// <param name="cmod">並び替えの方法</param> public ListViewItemComparer( int col, SortOrder ord, ComparerMode cmod ) { this._column = col; this._order = ord; this._mode = cmod; }
//xがyより小さいときはマイナスの数、大きいときはプラスの数、 //同じときは0を返す public int Compare( object a, object b ) { var result = 0; // ListViewItemの取得 var item_a = (ListViewItem) a; var item_b = (ListViewItem) b; // 並べ替えの方法を決定 if( this._columnModes != null && _columnModes.Length > _column) { this._mode = this._columnModes[ this._column ]; } // aとbを比較する switch( _mode ) { case ComparerMode.STRING: result = String.Compare( item_a.SubItems[this._column].Text, item_b.SubItems[this._column].Text ); break; case ComparerMode.NUMERIC: result = Int32.Parse( item_a.SubItems[this._column].Text) - Int32.Parse(item_b.SubItems[this._column].Text ); break; case ComparerMode.TAG_DATETIME: result = DateTime.Compare( DateTime.Parse(item_a.SubItems[this._column].Text ), DateTime.Parse(item_b.SubItems[this._column].Text ) ); break; case ComparerMode.TAG_HEXADECIMAL: result = Int32.Parse( item_a.SubItems[this._column].Text, System.Globalization.NumberStyles.HexNumber ); break; case ComparerMode.TAG_NUMERIC: result = (int)item_a.SubItems[this._column].Tag - (int)item_b.SubItems[this._column].Tag; break; case ComparerMode.TAG_STRING: result = String.Compare( (string)item_a.SubItems[this._column].Tag, (string)item_b.SubItems[this._column].Tag ); break; } if( this._order == SortOrder.Descending ) { result = -result; } else if ( this._order == SortOrder.None ) { result = 0; } return result; }
//xがyより小さいときはマイナスの数、大きいときはプラスの数、 //同じときは0を返す public int Compare(object x, object y) { string TAG = "[ListViewItemComparer・Compare]"; string dbMsg = TAG; int result = 0; try { dbMsg += _column + "列目" + _order; if (_order == SortOrder.None) //並び替えない時 { return(0); } // dbMsg += ",_columnModes=" + _columnModes; if (_columnModes != null && _columnModes.Length > _column) //並べ替えの方法を決定 { _mode = _columnModes[_column]; } dbMsg += ",_mode=" + _mode; //Integer ListViewItem itemx = (ListViewItem)x; //ListViewItemの取得 string xName = itemx.Name.Replace(@":\\", @":\"); // dbMsg += "\nitemx=" + xName; System.IO.FileInfo fiX = new System.IO.FileInfo(xName); string xAttributes = fiX.Attributes.ToString(); // dbMsg += "=" + xAttributes; string xStr = fiX.Name; DateTime xDate = fiX.LastWriteTime; int xInt = 0; if (xAttributes.Contains("Directory")) { DirectoryInfo diX = new DirectoryInfo(xName); xInt = (diX.GetDirectories().Length + diX.GetFiles().Length); } else { xInt = (int)fiX.Length; } ListViewItem itemy = (ListViewItem)y; string yName = itemy.Name.Replace(@":\\", @":\"); string yAttributes = ""; string yStr = ""; int yInt = 0; DateTime yDate = DateTime.MinValue; System.IO.FileInfo fiY; // dbMsg += "\nitemy=" + yName; if (yName != null && yName != "") { fiY = new System.IO.FileInfo(yName); yAttributes = fiY.Attributes.ToString(); // dbMsg += "=" + yAttributes; yStr = fiY.Name; yDate = fiY.LastWriteTime; if (yAttributes.Contains("Directory")) { DirectoryInfo diY = new DirectoryInfo(yName); yInt = diY.GetFiles().Length; } else { yInt = (int)fiY.Length; } } switch (_mode) //並び替えの方法別に、xとyを比較する { case ComparerMode.String: //文字列をとして比較 dbMsg += "\nX:" + xStr + "とY;" + yStr; result = string.Compare(xStr, yStr); //itemx.SubItems[_column].Text, itemy.SubItems[_column].Text break; case ComparerMode.Integer: //Int32に変換して比較//.NET Framework 2.0からは、TryParseメソッドを使うこともできる dbMsg += "\nX:" + xInt + "とY;" + yInt; if (xInt < yInt) { result = -1; } else { result = 1; } break; case ComparerMode.DateTime: //DateTimeに変換して比較 //.NET Framework 2.0からは、TryParseメソッドを使うこともできる dbMsg += "\nX:" + xDate + "とY;" + yDate; result = DateTime.Compare(xDate, yDate); break; } dbMsg += " ,result=" + result; dbMsg += "\n," + xAttributes + "と" + yAttributes; if (!xAttributes.Contains("Directory") && yAttributes.Contains("Directory")) //Directoryが上に有れば { dbMsg += ">YはDirectory>"; result = -1; } else if (xAttributes.Contains("Directory") && !yAttributes.Contains("Directory")) //Directoryが上に有れば { dbMsg += ">XはDirectory>"; result = 1; } else { if (_order == SortOrder.Descending) //降順の時は結果を+-逆にする { dbMsg += ",反転"; result = -result; } } dbMsg += ">result>" + result; if (result < 0) { dbMsg += "でYを下に>"; } else { dbMsg += "でYを上に>"; } rootForm.MyLog(dbMsg); } catch (Exception er) { dbMsg += "<<以降でエラー発生>>" + er.Message; rootForm.MyLog(dbMsg); } return(result); //結果を返す }
public ListViewItemComparer() { _column = 0; _order = SortOrder.Ascending; _mode = ComparerMode.String; }
//x��y��菬�����Ƃ��̓}�C�i�X�̐��A�傫���Ƃ��̓v���X�̐��A //�����Ƃ���0��Ԃ� public int Compare(object x, object y) { int result = 0; //ListViewItem�̎擾 ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; //���בւ��̕��@����� if (_columnModes != null && _columnModes.Length > _column) { _mode = _columnModes[_column]; } //���ёւ��̕��@�ʂɁAx��y���r���� try { switch (_mode) { case ComparerMode.String: result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: result = int.Parse(itemx.SubItems[_column].Text) - int.Parse(itemy.SubItems[_column].Text); break; case ComparerMode.DateTime: result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } } catch (Exception) { } // �~���̎��͌��ʂ�+-�t�ɂ��� if (_order == SortOrder.Descending) { result = -result; } else if (_order == SortOrder.None) { result = 0; } //���ʂ�Ԃ� return (result); }
public ListViewItemComparer() { mColumn = 0; mSortOrder = SortOrder.Ascending; mComparerMode = ComparerMode.String; }
public ListViewItemComparer(int column, ComparerMode mode, bool descending = false) { col = column; selectedComparerMode = mode; isDescending = descending; }
/// <summary> /// ListViewItemComparerクラスのコンストラクタ /// </summary> /// <param name="col">並び替える列番号</param> /// <param name="ord">昇順か降順か</param> /// <param name="cmod">並び替えの方法</param> public ListViewItemComparer(int col, SortOrder ord, ComparerMode cmod) { _column = col; Order = ord; Mode = cmod; }
/// <summary> /// 発言一覧を指定された ComparerMode に基づいてソートする /// </summary> private void SetSortColumn(ComparerMode sortColumn) { if (this._cfgCommon.SortOrderLock) return; this._statuses.ToggleSortOrder(sortColumn); this.InitColumnText(); var list = this._curList; if (_iconCol) { list.Columns[0].Text = this.ColumnText[0]; list.Columns[1].Text = this.ColumnText[2]; } else { for (var i = 0; i <= 7; i++) { list.Columns[i].Text = this.ColumnText[i]; } } this.PurgeListViewItemCache(); var tab = this._statuses.Tabs[this._curTab.Text]; if (tab.AllCount > 0 && this._curPost != null) { var idx = tab.IndexOf(this._curPost.StatusId); if (idx > -1) { this.SelectListItem(list, idx); list.EnsureVisible(idx); } } list.Refresh(); this.ModifySettingCommon = true; }
/// <summary> /// ソート /// </summary> /// <param name="x">ListViewItem</param> /// <param name="y">ListViewItem</param> public int Compare(object x, object y) { int result = 0; ListViewItem itemx = (ListViewItem)x; ListViewItem itemy = (ListViewItem)y; if (_order == SortOrder.None) return 0; // ソート方法決定 if (_columnModes != null && _columnModes.Length > _column) _mode = _columnModes[_column]; // ソート方法別にxとyを比較 switch (_mode) { case ComparerMode.String: // 文字列 result = string.Compare(itemx.SubItems[_column].Text, itemy.SubItems[_column].Text); break; case ComparerMode.Integer: // 数値 result = int.Parse(itemx.SubItems[_column].Text).CompareTo(int.Parse(itemy.SubItems[_column].Text)); break; case ComparerMode.DateTime: // 日付 result = DateTime.Compare(DateTime.Parse(itemx.SubItems[_column].Text), DateTime.Parse(itemy.SubItems[_column].Text)); break; } // 降順時は結果を+-逆にする return (_order == SortOrder.Descending) ? -result : result; }
// ソートモードとソートオーダーに従い比較関数のアドレスを切り替え private void SetCompareMethod(ComparerMode mode, SortOrder order) { _compareMethod = GetCompareMethod(mode, order); }
public SortOrder ToggleSortOrder(ComparerMode sortMode) { if (this.SortMode == sortMode) { if (this.SortOrder == SortOrder.Ascending) { this.SortOrder = SortOrder.Descending; } else { this.SortOrder = SortOrder.Ascending; } } else { this.SortMode = sortMode; this.SortOrder = SortOrder.Ascending; } this.SortPosts(); return this.SortOrder; }
/// <summary> /// ListViewItemComparerクラスのコンストラクタ(引数付は未使用) /// </summary> public IdComparerClass() { _sortOrder = SortOrder.Ascending; _comparerMode = ComparerMode.Id; SetCompareMethod(_comparerMode, _sortOrder); }
public ListViewItemComparer(int column) { col = column; selectedComparerMode = 0; }
public ListViewItemComparer() { _column = 0; _order = System.Windows.Forms.SortOrder.Ascending; _mode = ComparerMode.String; }