- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个测试程序,它构建一个数据表(26 行 x 6 列)作为 DataGridView 的数据源。
可以通过选择单元格并从 3 个 NumUpDown 控件之一输入值来编辑数据网格。
每个控件都有特定的颜色。为了保留信息,我将表格保存在用户设置中。
我将每个单元格的颜色信息保存在额外的表格单元格中。
问题:当我显示数据网格时,它从表中读取的值正常,但不显示应该根据额外单元格信息以编程方式添加的单元格颜色。
(我可以在诊断中看到单元格获得了正确的颜色,但它没有显示在数据网格中。
看起来 datagird 有一些颜色覆盖(?)。
附件是完整的工作代码。
在代码中查看更多信息。
任何人都可以运行它并找出为什么数据网格中没有显示颜色吗?谢谢。
using System;
using System.Data;
using System.Drawing;
using System.Web.UI.WebControls;
using System.Windows.Forms;
//This is a test program to do the following:
//1. Build an empty data table of 26 rows by 6 columns.
//2. The Table is bind (as DataSource) to a DataGridView.
//3. The DataGrid Colomns 0-3 can be filled with decimals by one of 3 NumericUpDown controls.
//3. For each cell in cols 0-2 there is one in cols 3-5 that holds info which NumUpDn was used.
//4. Each NumUpDn has specific color. The corresponding cells have the same backcolor.
//5. When the program starts, it builds the table from the Settings, and displays the table in the datagrid.
//6. The cells in cols 0-2 are supposed to get the colors ad indicated in cols 3-5, but they do not.
//To run, make a WinForm with a datagrid 'fareGrid' and 3 NumUpDn controls with background colors.
namespace DataGridViewTest
{
public partial class Form1 : Form
{
DataTable fareTable = new DataTable();
int rowIndex;
int colIndex;
public Form1()
{
InitializeComponent();
buildFareTable("fareTable");
// Load the table (if exists)
if (Properties.Settings.Default.fareTable != null)
fareTable = Properties.Settings.Default.fareTable;
paintFareTableCells(fareTable);
}
//Build the initial data table of 26R X 6C
//Columns 3-5 are used to hold the color information of cols 0-2
public void buildFareTable(string fareTableName)
{
fareTable.TableName = fareTableName;
fareTable.Columns.Add("Weekday", typeof(Decimal));
fareTable.Columns.Add("HalfDay", typeof(Decimal));
fareTable.Columns.Add("Weekend", typeof(Decimal));
//Adding 3 indexing columns that will hold the tables cell group
fareTable.Columns.Add("IWeekday", typeof(String));
fareTable.Columns.Add("IHalfDay", typeof(String));
fareTable.Columns.Add("Iweekend", typeof(String));
for (rowIndex = 0; rowIndex < 26; rowIndex++)
{
fareTable.Rows.Add();
}
}
public void paintFareTableCells(DataTable fareTable)
{
fareDataGrid.DataSource = fareTable;
for (rowIndex = 0; rowIndex < 26; rowIndex++)
{
for (colIndex = 0; colIndex < 3; colIndex++)
{
switch (fareTable.Rows[rowIndex][colIndex + 3].ToString()) //Check the color index columns 3-5
{
case "low": fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Green;
break;
case "med": fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Yellow;
break;
case "high": fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Red;
break;
default:
break;
}
// Diagnostics: Check cell's color. At this point, Colors are OK!
Color color = fareDataGrid[colIndex, rowIndex].Style.BackColor;
}
}
}
//Update the cells by 3 NumUpDn controls.
private void numericUpDownFareHigh_ValueChanged(object sender, EventArgs e)
{
editFareTableCells(sender);
}
private void numericUpDownFareMed_ValueChanged(object sender, EventArgs e)
{
editFareTableCells(sender);
}
private void numericUpDownFareLow_ValueChanged(object sender, EventArgs e)
{
editFareTableCells(sender);
}
public void editFareTableCells(Object sender)
{
foreach (DataGridViewCell cell in fareDataGrid.SelectedCells)
{
if (cell.ColumnIndex < 3)
{
cell.Value = ((NumericUpDown)sender).Value;
cell.Style.BackColor = ((NumericUpDown)sender).BackColor;
fareDataGrid[cell.ColumnIndex + 3, cell.RowIndex].Value = ((NumericUpDown)sender).Tag; //Uses cols 3-5 to hold cost level info.
}
}
}
//Use settings to preserve the data
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.fareTable = this.fareTable;
Properties.Settings.Default.Save();
}
}
}
最佳答案
变色代码必须在事件处理程序中;具体来说,DataBindingComplete
事件处理程序。我按如下方式重写了您的代码:
public void paintFareTableCells(DataTable fareTable)
{
fareDataGrid.DataSource = fareTable;
}
void fareDataGrid_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for (rowIndex = 0; rowIndex < 26; rowIndex++)
{
for (colIndex = 0; colIndex < 3; colIndex++)
{
switch (fareTable.Rows[rowIndex][colIndex + 3].ToString()) //Check the color index columns 3-5
{
case "low":
fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Green;
break;
case "med":
fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Yellow;
break;
case "high":
fareDataGrid[colIndex, rowIndex].Style.BackColor = Color.Red;
break;
default:
break;
}
// Diagnostics: Check cell's color. At this point, Colors are OK!
Color color = fareDataGrid[colIndex, rowIndex].Style.BackColor;
}
}
}
单元格现在根据需要更改颜色。
顺便说一句,不要忘记在构造函数中订阅事件处理程序:
fareDataGrid.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(fareDataGrid_DataBindingComplete);
关于c# - DataGridView 单元格颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16658865/
我已经尝试在我的 CSS 中添加一个元素来删除每三个 div 的 margin-right。不过,似乎只是出于某种原因影响了第 3 次和第 7 次。需要它在第 3、6、9 等日工作... CSS .s
如何使 div/input 闪烁或“脉冲”?例如,假设表单字段输入了无效值? 最佳答案 使用 CSS3 类似 on this page ,您可以将脉冲效果添加到名为 error 的类中: @-webk
我目前正在尝试构建一个简单的 wireframe来自 lattice 的情节包,但由沿 y 轴的数百个点组成。这导致绘图被线框网格淹没,您看到的只是一个黑色块。我知道我可以用 col=FALSE 完全
在知道 parent>div CSS 选择器在 IE 中无法识别后,我重新编码我的 CSS 样式,例如: div#bodyMain div#paneLeft>div{/*styles here*/}
我有两个 div,一个在另一个里面。当我将鼠标悬停 到最外面的那个时,我想改变它的颜色,没问题。但是,当我将鼠标悬停 到内部时,我只想更改它的颜色。这可能吗?换句话说,当 将鼠标悬停到内部 div 上
我需要展示这样的东西 有人可以帮忙吗?我可以实现以下输出 我正在使用以下代码:: GridView.builder( scrollDirection: Axis.vertical,
当 Bottom Sheet 像 Android 键盘一样打开时,是否有任何方法可以手动上推布局( ScrollView 或回收器 View 或整个 Activity )?或者你可以说我想以 Bott
我有以下代码,用于使用纯 HTML 和 CSS 显示翻转。当您将鼠标悬停在文本上时,它会更改左右图像。 在我测试的所有浏览器中都运行良好,Safari 4 除外。据我收集的信息,Safari 4 支持
我构建了某种 CMS,但在使用 TinyMCE 和 Bootstrap 时遇到了一些问题。 我有一个页面,其中概述了一个 div,如果用户单击该 div,他们可以从模态中选择图像。该图像被插入到一个
出于某种原因,当我设置一个过渡时,当我的鼠标悬停在一个元素上时,背景会改变颜色,它只适用于一个元素,但它们都共享同一个类?任何帮助我的 CSS .outer_ad { position:rel
好吧,这真的很愚蠢。我不知道 Android Studio 中的调试监视框架发生了什么。我有 1.5.1 的工作室。 是否有一些来自 intellij 的 secret 知识来展示它。 最佳答案 与以
我有这个标记: some code > 我正在尝试获取此布局: 注意:上一个和下一个按钮靠近#player 我正在尝试这样: .nextBtn{
网站:http://avuedesigns.com/index 首页有 6 个菜单项。我希望每件元素在您经过时都有自己的颜色。 这是当您将鼠标悬停在 div 上时将所有内容更改为白色的行 li#hom
我需要在 index.php 文件中显示它,但没有任何效果。我所有的文章都没有正确定位。我将其用作代码: 最佳答案 您可以首先检查您
我是一名优秀的程序员,十分优秀!