You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
6.6 KiB

#if NETFX || NETCORE
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using Apewer;
namespace Apewer.Surface
{
/// <summary></summary>
public partial class BlockLog : BaseControl
{
private DataGridView _table = new DataGridView();
private Panel _tipwall = new Panel();
private TextBox _tiptext = new TextBox();
/// <summary></summary>
public BlockLog()
{
BackColor = FormsUtility.GraceBorder;
Padding = new Padding(1);
Controls.Add(_table);
Controls.Add(_tipwall);
_tipwall.Controls.Add(_tiptext);
_tipwall.Visible = false;
_tipwall.Dock = DockStyle.Fill;
_tipwall.Padding = new Padding(40);
_tipwall.BackColor = FormsUtility.White;
_tiptext.Dock = DockStyle.Fill;
_tiptext.Multiline = true;
//_tiptext.ReadOnly = true;
_tiptext.BorderStyle = BorderStyle.None;
_tiptext.BackColor = _tipwall.BackColor;
_tiptext.ScrollBars = ScrollBars.None;
_table.Dock = DockStyle.Fill;
_table.Font = FormsUtility.DefaultFont; ;
_table.ColumnHeadersHeight = 32;
_table.RowHeadersVisible = false;
_table.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
_table.MultiSelect = false;
//_table.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
_table.BackgroundColor = FormsUtility.White;
_table.GridColor = FormsUtility.GraceBorder;
_table.BorderStyle = BorderStyle.None;
_table.CellBorderStyle = DataGridViewCellBorderStyle.None;
_table.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
_table.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
_table.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
_table.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
_table.ReadOnly = true;
_table.AllowUserToAddRows = false;
_table.AllowUserToDeleteRows = false;
_table.AllowUserToOrderColumns = false;
_table.AllowUserToResizeColumns = true;
_table.AllowUserToResizeRows = false;
_table.RowsDefaultCellStyle.BackColor = Color.White;
_table.RowsDefaultCellStyle.NullValue = "";
_table.RowsDefaultCellStyle.SelectionBackColor = FormsUtility.GraceWall;
_table.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.False;
_table.Columns.Add("_clock", "时间");
_table.Columns.Add("_text", "内容");
_table.Columns["_clock"].Width = 150;
_table.Columns["_text"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
_table.ColumnHeadersVisible = false;
_table.CellDoubleClick += Event_Table_DoubleClick;
_tipwall.DoubleClick += Event_TipWall_DoubleClick;
_tiptext.DoubleClick += Event_TipText_DoubleClick;
}
/// <summary></summary>
public new void Dispose()
{
_tipwall.Controls.Clear();
Controls.Clear();
if (_table != null) _table.Dispose();
if (_tiptext != null) _tiptext.Dispose();
if (_tipwall != null) _tipwall.Dispose();
base.Dispose();
}
private void Event_TipText_DoubleClick(object sender, EventArgs e)
{
_tipwall.Visible = false;
_table.Visible = true;
}
private void Event_TipWall_DoubleClick(object sender, EventArgs e)
{
_tipwall.Visible = false;
_table.Visible = true;
}
private void Event_Table_DoubleClick(object sender, DataGridViewCellEventArgs e)
{
if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0))
{
_table.Visible = false;
_tipwall.Visible = true;
_tiptext.Text = _table[e.ColumnIndex, e.RowIndex].Value.ToString();
_tiptext.ForeColor = _table[e.ColumnIndex, e.RowIndex].Style.ForeColor;
}
}
/// <summary></summary>
public void Write(string text = "") { Write(text, ForeColor); }
/// <summary></summary>
public void Blue(string text = "") { Write(text, FormsUtility.Blue); }
/// <summary></summary>
public void Purple(string text = "") { Write(text, FormsUtility.Purple); }
/// <summary></summary>
public void Orange(string text = "") { Write(text, FormsUtility.Orange); }
/// <summary></summary>
public void Black(string text = "") { Write(text, FormsUtility.Black); }
/// <summary></summary>
public void Green(string text = "") { Write(text, FormsUtility.Green); }
/// <summary></summary>
public void Red(string text = "") { Write(text, FormsUtility.Red); }
/// <summary></summary>
public void Gray(string text = "") { Write(text, FormsUtility.GraceLocked); }
/// <summary></summary>
public void Error(string text = "") { Red(text); }
/// <summary></summary>
public void Write(string text, Color color)
{
string t = string.IsNullOrEmpty(text) ? " " : text;
try
{
Invoke(new Invoker(delegate ()
{
int i = _table.Rows.Add(ClockUtility.LucidNow, t);
var c = (color == null) ? FormsUtility.Black : color;
_table.Rows[i].Height = 24;
_table.Rows[i].Cells[0].Style.Padding = new Padding(6, 0, 4, 0);
_table.Rows[i].Cells[0].Style.ForeColor = FormsUtility.GraceLocked;
_table.Rows[i].Cells[0].Style.SelectionForeColor = FormsUtility.GraceLocked;
_table.Rows[i].Cells[1].Style.ForeColor = c;
_table.Rows[i].Cells[1].Style.SelectionForeColor = c;
_table.CurrentCell = _table[0, i];
}));
}
catch { }
}
/// <summary></summary>
public void Clean()
{
_table.Rows.Clear();
}
/// <summary></summary>
public void Clear()
{
Clean();
}
/// <summary></summary>
public void ShowMilli()
{
_table.Columns["_clock"].Width = 160;
}
}
}
#endif