cbfa535d20
* Add log tab * Merge control mesg & duty log * Fix ping (calc loss) * Add current connection in ping tab. Able to copy by double clicking item * Log font has moved to config * Add debug enable on config + save * Display ping failed reason (debug enable) * Handled copy exception * New content list in duty tab * Show loss rate option in ping tab * Rename Chinese packet info file (No data) * Bigger UI font
199 lines
3.7 KiB
C#
199 lines
3.7 KiB
C#
// https://www.codeproject.com/Articles/13006/Extended-ListView
|
|
using System.Windows.Forms;
|
|
using System.Drawing;
|
|
using System.Collections;
|
|
|
|
namespace DutyContent.ThirdParty
|
|
{
|
|
class EXComboBox : ComboBox
|
|
{
|
|
private Brush _highlightbrush; //color of highlighted items
|
|
|
|
public EXComboBox()
|
|
{
|
|
_highlightbrush = SystemBrushes.Highlight;
|
|
DrawMode = DrawMode.OwnerDrawFixed;
|
|
DrawItem += new DrawItemEventHandler(SelfDrawItem);
|
|
}
|
|
|
|
public Brush MyHighlightBrush
|
|
{
|
|
get { return _highlightbrush; }
|
|
set { _highlightbrush = value; }
|
|
}
|
|
|
|
private void SelfDrawItem(object sender, DrawItemEventArgs e)
|
|
{
|
|
if (e.Index == -1)
|
|
return;
|
|
|
|
e.DrawBackground();
|
|
|
|
if ((e.State & DrawItemState.Selected) != 0)
|
|
{
|
|
e.Graphics.FillRectangle(_highlightbrush, e.Bounds);
|
|
}
|
|
|
|
EXItem item = (EXItem)this.Items[e.Index];
|
|
Rectangle bounds = e.Bounds;
|
|
int x = bounds.X + 2;
|
|
|
|
if (item.GetType() == typeof(EXImageItem))
|
|
{
|
|
EXImageItem imgitem = (EXImageItem)item;
|
|
if (imgitem.MyImage != null)
|
|
{
|
|
Image img = imgitem.MyImage;
|
|
int y = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(img.Height / 2)) + 1;
|
|
e.Graphics.DrawImage(img, x, y, img.Width, img.Height);
|
|
x += img.Width + 2;
|
|
}
|
|
}
|
|
else if (item.GetType() == typeof(EXMultipleImagesItem))
|
|
{
|
|
EXMultipleImagesItem imgitem = (EXMultipleImagesItem)item;
|
|
if (imgitem.MyImages != null)
|
|
{
|
|
for (int i = 0; i < imgitem.MyImages.Count; i++)
|
|
{
|
|
Image img = (Image)imgitem.MyImages[i];
|
|
int y = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(img.Height / 2)) + 1;
|
|
e.Graphics.DrawImage(img, x, y, img.Width, img.Height);
|
|
x += img.Width + 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
int fonty = bounds.Y + ((int)(bounds.Height / 2)) - ((int)(e.Font.Height / 2));
|
|
e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor), x, fonty);
|
|
e.DrawFocusRectangle();
|
|
}
|
|
|
|
public class EXItem
|
|
{
|
|
private string _text = "";
|
|
private string _value = "";
|
|
|
|
public EXItem()
|
|
{
|
|
|
|
}
|
|
|
|
public EXItem(string text)
|
|
{
|
|
_text = text;
|
|
}
|
|
|
|
public string Text
|
|
{
|
|
get { return _text; }
|
|
set { _text = value; }
|
|
}
|
|
|
|
public string MyValue
|
|
{
|
|
get { return _value; }
|
|
set { _value = value; }
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return _text;
|
|
}
|
|
|
|
}
|
|
|
|
public class EXImageItem : EXItem
|
|
{
|
|
private Image _image;
|
|
|
|
public EXImageItem()
|
|
{
|
|
|
|
}
|
|
|
|
public EXImageItem(string text)
|
|
{
|
|
this.Text = text;
|
|
}
|
|
|
|
public EXImageItem(Image image)
|
|
{
|
|
_image = image;
|
|
}
|
|
|
|
public EXImageItem(string text, Image image)
|
|
{
|
|
this.Text = text;
|
|
_image = image;
|
|
}
|
|
|
|
public EXImageItem(Image image, string value)
|
|
{
|
|
_image = image;
|
|
this.MyValue = value;
|
|
}
|
|
|
|
public EXImageItem(string text, Image image, string value)
|
|
{
|
|
this.Text = text;
|
|
_image = image;
|
|
this.MyValue = value;
|
|
}
|
|
|
|
public Image MyImage
|
|
{
|
|
get { return _image; }
|
|
set { _image = value; }
|
|
}
|
|
|
|
}
|
|
|
|
public class EXMultipleImagesItem : EXItem
|
|
{
|
|
private ArrayList _images;
|
|
|
|
public EXMultipleImagesItem()
|
|
{
|
|
|
|
}
|
|
|
|
public EXMultipleImagesItem(string text)
|
|
{
|
|
this.Text = text;
|
|
}
|
|
|
|
public EXMultipleImagesItem(ArrayList images)
|
|
{
|
|
_images = images;
|
|
}
|
|
|
|
public EXMultipleImagesItem(string text, ArrayList images)
|
|
{
|
|
this.Text = text;
|
|
_images = images;
|
|
}
|
|
|
|
public EXMultipleImagesItem(ArrayList images, string value)
|
|
{
|
|
_images = images;
|
|
this.MyValue = value;
|
|
}
|
|
|
|
public EXMultipleImagesItem(string text, ArrayList images, string value)
|
|
{
|
|
this.Text = text;
|
|
_images = images;
|
|
this.MyValue = value;
|
|
}
|
|
|
|
public ArrayList MyImages
|
|
{
|
|
get { return _images; }
|
|
set { _images = value; }
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|