1

When I populate selected cells in my DataGridView with values, such as "1", rather than simply displaying "1" they display "1..."

Why would that be the case, and how can I prevent the ellipsis dots from displaying?

UPDATE

Here's the requested code (below). A scream shot of what it looks like is at (on hold, for some reason posterous is not accepting it as either a dot bump or a jay peg).

Anyway, the DGV looks something like this:

00:00 | 1...
00:15 | 
00:30 | 1...
00:45 | 1...

...when it should be:

00:00 | 1
00:15 | 
00:30 | 1
00:45 | 1

As noted in the comment on the last line, the phone value is simply "1" with the tested data. Hovering over that value shows a tooltip/hint of "1" (not "1..." or some such).

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..."
}
B. Clay Shannon-B. Crow Raven
  • 8,547
  • 144
  • 472
  • 862

1 Answers1

0

I used the msdn code referenced by , but incorporated the StringFormat object and replaced the garish crimson and blue with black (for the content font) and blanchedalmond, to blend in with my grid. The three things I changed from the msdn code are noted/commented:

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;
        }
    }
}
B. Clay Shannon-B. Crow Raven
  • 8,547
  • 144
  • 472
  • 862