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.

133 lines
5.0 KiB

#if NETFX || NETCORE
using System;
using System.Drawing;
using System.Windows.Forms;
using System.ComponentModel;
namespace Apewer.Surface
{
/// <summary></summary>
public class BlockTable : DataGridView
{
/// <summary></summary>
public BlockTable()
{
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.DoubleBuffer, true);
UpdateStyles();
this.Font = FormsUtility.DefaultFont;
this.ColumnHeadersHeight = 32;
this.RowHeadersVisible = false;
this.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
this.MultiSelect = false;
this.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
this.BackgroundColor = FormsUtility.White;
this.GridColor = FormsUtility.GraceBorder;
this.BorderStyle = BorderStyle.None;
this.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal;
this.EnableHeadersVisualStyles = false;
this.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
this.AdvancedColumnHeadersBorderStyle.Left = DataGridViewAdvancedCellBorderStyle.None;
this.AdvancedColumnHeadersBorderStyle.Right = DataGridViewAdvancedCellBorderStyle.None;
this.AdvancedColumnHeadersBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None;
this.AdvancedColumnHeadersBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.Single;
this.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.RowHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
this.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
this.ReadOnly = true;
this.AllowUserToAddRows = false;
this.AllowUserToDeleteRows = false;
this.AllowUserToOrderColumns = false;
this.AllowUserToResizeColumns = true;
this.AllowUserToResizeRows = false;
this.RowsDefaultCellStyle.BackColor = Color.White;
// this.RowsDefaultCellStyle.DataSourceNullValue ;
this.RowsDefaultCellStyle.SelectionBackColor = FormsUtility.GraceWall;
this.RowsDefaultCellStyle.SelectionForeColor = FormsUtility.Black;
this.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.False;
}
/// <summary></summary>
public void DisableSort()
{
for (int i = 0; i < this.Columns.Count; i++)
{
this.Columns[i].SortMode = DataGridViewColumnSortMode.Programmatic;
}
}
/// <summary></summary>
public void EnableSort()
{
for (int i = 0; i < this.Columns.Count; i++)
{
this.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic;
}
}
/// <summary></summary>
public void Beautify()
{
this.ColumnHeadersHeight = 30;
for (int i = 0; i < this.Columns.Count; i++)
{
this.Columns[i].HeaderCell.Style.BackColor = FormsUtility.GraceBorder;
//this.Columns[i].HeaderCell.Style.WrapMode = DataGridViewTriState.False;
}
for (int i = 0; i < this.Rows.Count; i++)
{
this.Rows[i].Height = 30;
}
}
/// <summary></summary>
public void Beautify(int rowIndex)
{
this.ColumnHeadersHeight = 30;
if (rowIndex >= 0)
{
if (rowIndex < this.Rows.Count)
{
this.Rows[rowIndex].Height = 30;
}
}
}
/// <summary>设置指定单元格的文本颜色。</summary>
/// <param name="row">行。</param>
/// <param name="column">列。</param>
/// <param name="color">文本颜色。</param>
public void SetCellColor(int row, string column, Color color)
{
try
{
Rows[row].Cells[column].Style.ForeColor = color;
Rows[row].Cells[column].Style.SelectionForeColor = color;
}
catch { }
}
/// <summary>设置指定单元格的文本颜色为红色。</summary>
public void SetCellRed(int row, string column) => SetCellColor(row, column, FormsUtility.Red);
/// <summary>设置指定单元格的文本颜色为绿色。</summary>
public void SetCellGreen(int row, string column) => SetCellColor(row, column, FormsUtility.Green);
/// <summary>设置指定单元格的文本颜色为蓝色。</summary>
public void SetCellBlue(int row, string column) => SetCellColor(row, column, FormsUtility.Blue);
/// <summary>设置指定单元格的文本颜色为黑色。</summary>
public void SetCellBlack(int row, string column) => SetCellColor(row, column, Color.Black);
}
}
#endif