1

DataGridView で選択したセルに「1」などの値を入力すると、単に「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..."
}
4

1 に答える 1

0

で参照されている msdn コードを使用しましたが、StringFormat オブジェクトを組み込み、派手なクリムゾンと青を黒 (コンテンツ フォント用) とブランチ アーモンドに置き換えて、グリッドに溶け込ませました。私が msdn コードから変更した 3 つの点が注記/コメントされています。

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;
        }
    }
}
于 2012-08-28T00:37:50.177 に答える