获取dataGridView C#中所有单元格的BackColor
Get the BackColor of all cells in dataGridView C#
我想获取所有单元格的背景颜色并将它们写入文本文件,因此输出将是:
黄绿色
橙色
钢蓝等
这是我试过的:
void GetColors()
{
string path = Application.StartupPath + @"/test.txt";
StreamWriter sw = new StreamWriter(path);
int n = 0;
DataGridViewColumn column = dataGridView1.Columns[n++];
DataGridViewCell cell = new DataGridViewTextBoxCell();
sw.WriteLine(cell.Style.BackColor);
column.CellTemplate = cell;
sw.Close();
}
我尝试了 cell.Style.BackColor.ToString();
和 .ToArgb();
用 ToString();我在输出中得到 Color {Empty}
并且使用 ToArgb 我得到 0
.
有人可以帮我吗?提前致谢...
当您创建 new DataGridViewTextBoxCell 对象时,您没有引用现有的单元格。
尝试枚举现有单元格:
foreach (DataGridViewRow row in dataGridView1.Rows) {
foreach (DataGridViewCell cell in row.Cells) {
sw.WriteLine(cell.Style.BackColor.ToKnownColor().ToString());
}
}
要保存和读取网格的配色方案,您可以将行和列信息保存到字符串中:
foreach (DataGridViewRow row in dataGridView1.Rows) {
foreach (DataGridViewCell cell in row.Cells) {
sw.WriteLine(string.Join(";", cell.RowIndex.ToString(),
cell.ColumnIndex.ToString(),
GetColorName(cell.Style.BackColor)));
}
}
GetColorName函数来自How to get the name of color while having its RGB value in C#?
要使用文件中的颜色更新网格,您需要解析信息:
foreach (string s in File.ReadAllLines(@"yourfile")) {
string[] items = s.Split(';');
if (items.Length == 3) {
dgv.Rows[Convert.ToInt32(items[0])]
.Cells[Convert.ToInt32(items[1])]
.Style.BackColor = Color.FromName(Convert.ToString(items[2]));
}
}
为简洁起见省略了任何错误检查。显然,文件中的行数和列数必须与 datagridview 控件显示的相匹配。
我想获取所有单元格的背景颜色并将它们写入文本文件,因此输出将是: 黄绿色 橙色 钢蓝等
这是我试过的:
void GetColors()
{
string path = Application.StartupPath + @"/test.txt";
StreamWriter sw = new StreamWriter(path);
int n = 0;
DataGridViewColumn column = dataGridView1.Columns[n++];
DataGridViewCell cell = new DataGridViewTextBoxCell();
sw.WriteLine(cell.Style.BackColor);
column.CellTemplate = cell;
sw.Close();
}
我尝试了 cell.Style.BackColor.ToString();
和 .ToArgb();
用 ToString();我在输出中得到 Color {Empty}
并且使用 ToArgb 我得到 0
.
有人可以帮我吗?提前致谢...
当您创建 new DataGridViewTextBoxCell 对象时,您没有引用现有的单元格。
尝试枚举现有单元格:
foreach (DataGridViewRow row in dataGridView1.Rows) {
foreach (DataGridViewCell cell in row.Cells) {
sw.WriteLine(cell.Style.BackColor.ToKnownColor().ToString());
}
}
要保存和读取网格的配色方案,您可以将行和列信息保存到字符串中:
foreach (DataGridViewRow row in dataGridView1.Rows) {
foreach (DataGridViewCell cell in row.Cells) {
sw.WriteLine(string.Join(";", cell.RowIndex.ToString(),
cell.ColumnIndex.ToString(),
GetColorName(cell.Style.BackColor)));
}
}
GetColorName函数来自How to get the name of color while having its RGB value in C#?
要使用文件中的颜色更新网格,您需要解析信息:
foreach (string s in File.ReadAllLines(@"yourfile")) {
string[] items = s.Split(';');
if (items.Length == 3) {
dgv.Rows[Convert.ToInt32(items[0])]
.Cells[Convert.ToInt32(items[1])]
.Style.BackColor = Color.FromName(Convert.ToString(items[2]));
}
}
为简洁起见省略了任何错误检查。显然,文件中的行数和列数必须与 datagridview 控件显示的相匹配。