📄 exlistview.cs
字号:
e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, new SolidBrush(e.SubItem.ForeColor), x, fonty);
return;
}
EXListViewSubItemAB subitem = e.SubItem as EXListViewSubItemAB;
if (subitem == null) {
e.DrawDefault = true;
} else {
x = subitem.DoDraw(e, x, this.Columns[e.ColumnIndex] as EXColumnHeader);
e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, new SolidBrush(e.SubItem.ForeColor), x, fonty);
}
}
private void this_ColumnClick(object sender, ColumnClickEventArgs e) {
if (this.Items.Count == 0) return;
for (int i = 0; i < this.Columns.Count; i++) {
this.Columns[i].ImageKey = null;
}
for (int i = 0; i < this.Items.Count; i++) {
this.Items[i].Tag = null;
}
if (e.Column != _sortcol) {
_sortcol = e.Column;
this.Sorting = SortOrder.Ascending;
this.Columns[e.Column].ImageKey = "up";
} else {
if (this.Sorting == SortOrder.Ascending) {
this.Sorting = SortOrder.Descending;
this.Columns[e.Column].ImageKey = "down";
} else {
this.Sorting = SortOrder.Ascending;
this.Columns[e.Column].ImageKey = "up";
}
}
if (_sortcol == 0) {
//ListViewItem
if (this.Items[0].GetType() == typeof(EXListViewItem)) {
//sorting on text
this.ListViewItemSorter = new ListViewItemComparerText(e.Column, this.Sorting);
} else {
//sorting on value
this.ListViewItemSorter = new ListViewItemComparerValue(e.Column, this.Sorting);
}
} else {
//ListViewSubItem
if (this.Items[0].SubItems[_sortcol].GetType() == typeof(EXListViewSubItemAB)) {
//sorting on text
this.ListViewItemSorter = new ListViewSubItemComparerText(e.Column, this.Sorting);
} else {
//sorting on value
this.ListViewItemSorter = new ListViewSubItemComparerValue(e.Column, this.Sorting);
}
}
}
class ListViewSubItemComparerText : System.Collections.IComparer {
private int _col;
private SortOrder _order;
public ListViewSubItemComparerText() {
_col = 0;
_order = SortOrder.Ascending;
}
public ListViewSubItemComparerText(int col, SortOrder order) {
_col = col;
_order = order;
}
public int Compare(object x, object y) {
int returnVal = -1;
string xstr = ((ListViewItem) x).SubItems[_col].Text;
string ystr = ((ListViewItem) y).SubItems[_col].Text;
decimal dec_x;
decimal dec_y;
DateTime dat_x;
DateTime dat_y;
if (Decimal.TryParse(xstr, out dec_x) && Decimal.TryParse(ystr, out dec_y)) {
returnVal = Decimal.Compare(dec_x, dec_y);
} else if (DateTime.TryParse(xstr, out dat_x) && DateTime.TryParse(ystr, out dat_y)) {
returnVal = DateTime.Compare(dat_x, dat_y);
} else {
returnVal = String.Compare(xstr, ystr);
}
if (_order == SortOrder.Descending) returnVal *= -1;
return returnVal;
}
}
class ListViewSubItemComparerValue : System.Collections.IComparer {
private int _col;
private SortOrder _order;
public ListViewSubItemComparerValue() {
_col = 0;
_order = SortOrder.Ascending;
}
public ListViewSubItemComparerValue(int col, SortOrder order) {
_col = col;
_order = order;
}
public int Compare(object x, object y) {
int returnVal = -1;
string xstr = ((EXListViewSubItemAB) ((ListViewItem) x).SubItems[_col]).MyValue;
string ystr = ((EXListViewSubItemAB) ((ListViewItem) y).SubItems[_col]).MyValue;
decimal dec_x;
decimal dec_y;
DateTime dat_x;
DateTime dat_y;
if (Decimal.TryParse(xstr, out dec_x) && Decimal.TryParse(ystr, out dec_y)) {
returnVal = Decimal.Compare(dec_x, dec_y);
} else if (DateTime.TryParse(xstr, out dat_x) && DateTime.TryParse(ystr, out dat_y)) {
returnVal = DateTime.Compare(dat_x, dat_y);
} else {
returnVal = String.Compare(xstr, ystr);
}
if (_order == SortOrder.Descending) returnVal *= -1;
return returnVal;
}
}
class ListViewItemComparerText : System.Collections.IComparer {
private int _col;
private SortOrder _order;
public ListViewItemComparerText() {
_col = 0;
_order = SortOrder.Ascending;
}
public ListViewItemComparerText(int col, SortOrder order) {
_col = col;
_order = order;
}
public int Compare(object x, object y) {
int returnVal = -1;
string xstr = ((ListViewItem) x).Text;
string ystr = ((ListViewItem) y).Text;
decimal dec_x;
decimal dec_y;
DateTime dat_x;
DateTime dat_y;
if (Decimal.TryParse(xstr, out dec_x) && Decimal.TryParse(ystr, out dec_y)) {
returnVal = Decimal.Compare(dec_x, dec_y);
} else if (DateTime.TryParse(xstr, out dat_x) && DateTime.TryParse(ystr, out dat_y)) {
returnVal = DateTime.Compare(dat_x, dat_y);
} else {
returnVal = String.Compare(xstr, ystr);
}
if (_order == SortOrder.Descending) returnVal *= -1;
return returnVal;
}
}
class ListViewItemComparerValue : System.Collections.IComparer {
private int _col;
private SortOrder _order;
public ListViewItemComparerValue() {
_col = 0;
_order = SortOrder.Ascending;
}
public ListViewItemComparerValue(int col, SortOrder order) {
_col = col;
_order = order;
}
public int Compare(object x, object y) {
int returnVal = -1;
string xstr = ((EXListViewItem) x).MyValue;
string ystr = ((EXListViewItem) y).MyValue;
decimal dec_x;
decimal dec_y;
DateTime dat_x;
DateTime dat_y;
if (Decimal.TryParse(xstr, out dec_x) && Decimal.TryParse(ystr, out dec_y)) {
returnVal = Decimal.Compare(dec_x, dec_y);
} else if (DateTime.TryParse(xstr, out dat_x) && DateTime.TryParse(ystr, out dat_y)) {
returnVal = DateTime.Compare(dat_x, dat_y);
} else {
returnVal = String.Compare(xstr, ystr);
}
if (_order == SortOrder.Descending) returnVal *= -1;
return returnVal;
}
}
}
public class EXColumnHeader : ColumnHeader {
public EXColumnHeader() {
}
public EXColumnHeader(string text) {
this.Text = text;
}
public EXColumnHeader(string text, int width) {
this.Text = text;
this.Width = width;
}
}
public class EXEditableColumnHeader : EXColumnHeader {
private Control _control;
public EXEditableColumnHeader() {
}
public EXEditableColumnHeader(string text) {
this.Text = text;
}
public EXEditableColumnHeader(string text, int width) {
this.Text = text;
this.Width = width;
}
public EXEditableColumnHeader(string text, Control control) {
this.Text = text;
this.MyControl = control;
}
public EXEditableColumnHeader(string text, Control control, int width) {
this.Text = text;
this.MyControl = control;
this.Width = width;
}
public Control MyControl {
get {return _control;}
set {
_control = value;
_control.Visible = false;
_control.Tag = "not_init";
}
}
}
public class EXBoolColumnHeader : EXColumnHeader {
private Image _trueimage;
private Image _falseimage;
private bool _editable;
public EXBoolColumnHeader() {
init();
}
public EXBoolColumnHeader(string text) {
init();
this.Text = text;
}
public EXBoolColumnHeader(string text, int width) {
init();
this.Text = text;
this.Width = width;
}
public EXBoolColumnHeader(string text, Image trueimage, Image falseimage) {
init();
this.Text = text;
_trueimage = trueimage;
_falseimage = falseimage;
}
public EXBoolColumnHeader(string text, Image trueimage, Image falseimage, int width) {
init();
this.Text = text;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -