当我使用值(例如“1”)填充DataGridView中的选定单元格而不是简单地显示“1”时,它们显示“1 ...”
为什么会出现这种情况,如何防止省略号点显示?
这是请求的代码(如下)。它看起来像是一个尖叫镜头(暂停,由于某种原因,后来并不接受它作为一个点凹凸或一个尖峰钉)。
无论如何,DGV看起来像这样:
00:00 | 1...
00:15 |
00:30 | 1...
00:45 | 1...
......应该是:
00:00 | 1
00:15 |
00:30 | 1
00:45 | 1
如最后一行的评论中所述,电话值与测试数据的关系仅为“1”。将鼠标悬停在该值上会显示工具提示/提示“1”(不是“1 ......”或其他一些)。
private void CreateAndPopulateDGVPlatypusScheduleCells()
{
// Add the needed columns
if (dataGridViewPlatypusSchedule.Columns.Count == 0) {
for (int i = 0; i < PLATYPUS_SCHEDULE_COL_COUNT; i++) {
string colName = string.Format("Column{0}", i + 1);
dataGridViewPlatypusSchedule.Columns.Add(colName, colName);
dataGridViewPlatypusSchedule.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridViewPlatypusSchedule.Columns[i].Resizable = DataGridViewTriState.False;
DataGridViewCell cell = new DataGridViewTextBoxCell();
if (i % 4 == 0) {
cell.Style.BackColor = Color.Bisque;
dataGridViewPlatypusSchedule.Columns[i].CellTemplate = cell;
dataGridViewPlatypusSchedule.Columns[i].Width = 41;
dataGridViewPlatypusSchedule.Columns[i].ReadOnly = true;
} else {
cell.Style.BackColor = Color.White;
dataGridViewPlatypusSchedule.Columns[i].CellTemplate = cell;
dataGridViewPlatypusSchedule.Columns[i].Width = 13;
dataGridViewPlatypusSchedule.Columns[i].ReadOnly = false;
}
}
}
// Add the needed rows
if (dataGridViewPlatypusSchedule.Rows.Count == 0)
{
for (int row = 0; row < PlatypusScheduleGridRowCount; row++) {
// Save each row as an array
string[] currentRowContents = new string[PLATYPUS_SCHEDULE_COL_COUNT];
// Add each column to the currentColumn
for (int col = 0; col < PLATYPUS_SCHEDULE_COL_COUNT; col++)
{
currentRowContents[col] = this.GetPlatypusScheduleTimeStringForCell(row, col);
}
// Add the row to the DGV
dataGridViewPlatypusSchedule.Rows.Add(currentRowContents);
}
}
int dow = this.GetDOWAsInt(ActiveDow);
listQHduckBill = InterpSchedData.GetPlatypusScheduleForFunnyMammal(platypusId, dow);
foreach (var duckBill in listQHduckBill)
{
int QHCell = duckBill.QH;
string ph1 = duckBill.PH1;
string ph2 = duckBill.PH2;
string ph3 = duckBill.PH3;
if (!(string.IsNullOrWhiteSpace(ph1)))
{
PopulatePlatypusScheduleCell(QHCell, 1, ph1);
}
if (!(string.IsNullOrWhiteSpace(ph2))) {
PopulatePlatypusScheduleCell(QHCell, 2, ph2);
}
if (!(string.IsNullOrWhiteSpace(ph3))) {
PopulatePlatypusScheduleCell(QHCell, 3, ph3);
}
}
}
private void PopulatePlatypusScheduleCell(int cellToPopulate, int offset, string phoneVal)
{
int timeColumnBase = (cellToPopulate / PLATYPUS_SCHEDULE_COL_COUNT);
string colName = this.GetColumnToPopulate(timeColumnBase, offset);
int rowToPopulate = GetRowToPopulate(cellToPopulate);
DataGridViewRow dgvr = dataGridViewPlatypusSchedule.Rows[rowToPopulate];
dgvr.Cells[colName].Value = phoneVal; // <- This (phoneVal) is "1" but displays as "1..."
}
答案 0 :(得分:0)
我使用了引用的msdn代码,但是并入了StringFormat对象并用黑色(用于内容字体)和blanchedalmond替换了花哨的深红色和蓝色,以与我的网格混合。我在msdn代码中更改的三件事是注释/注释:
private void dataGridViewLifeSchedule_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {
// 1. This is used to replace what is StringFormat.GenericDefault in the msdn code with strFormat
StringFormat strFormat = new StringFormat();
strFormat.Trimming = StringTrimming.None;
Rectangle newRect = new Rectangle(e.CellBounds.X + 1,
e.CellBounds.Y + 1, e.CellBounds.Width - 4,
e.CellBounds.Height - 4);
using (
Brush gridBrush = new SolidBrush(this.dataGridViewLifeSchedule.GridColor),
backColorBrush = new SolidBrush(e.CellStyle.BackColor)) {
using (Pen gridLinePen = new Pen(gridBrush)) {
// Erase the cell.
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
// Draw the grid lines (only the right and bottom lines;
// DataGridView takes care of the others).
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,
e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
e.CellBounds.Bottom - 1);
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
e.CellBounds.Top, e.CellBounds.Right - 1,
e.CellBounds.Bottom);
// Draw the inset highlight box.
e.Graphics.DrawRectangle(Pens.BlanchedAlmond, newRect); // 2. It is Pens.Blue in the msdn code
// Draw the text content of the cell, ignoring alignment.
if (e.Value != null) {
e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
Brushes.Black, e.CellBounds.X + 2, // 3. It is Brushes.Crimson in the msdn code
e.CellBounds.Y + 2, strFormat);
}
e.Handled = true;
}
}
}