Helpex - Trao đổi & giúp đỡ Đăng nhập
24

Tôi đang cố gắng thay đổi căn chỉnh văn bản và kích thước phông chữ của DataGridView. Tất cả các Cột được tạo theo chương trình trong thời gian chạy. Đây là mã ..

private void LoadData()
{
    dgvBreakDowns.ColumnCount = 5;
    dgvBreakDowns.Columns[0].Name = "Breakdown No";
    dgvBreakDowns.Columns[1].Name = "Breakdown Type";
    dgvBreakDowns.Columns[2].Name = "Machine Type";
    dgvBreakDowns.Columns[3].Name = "Date";
    dgvBreakDowns.Columns[4].Name = "Completed";

    dgvBreakDowns.Columns[4].Visible = false;

    foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows)
    {
        header.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        header.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel);
    }
}

Đây LoadData()phương pháp được gọi là trong constructor của Form. Các Cột được tạo nhưng các thay đổi của Tiêu đề của chúng không áp dụng. Tôi nghĩ rằng đó là do một lỗ hổng trong vòng lặp của foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows)?tôi, tôi không chắc chắn. Tôi đã thử thay đổi nó thành dgvBreakDowns.Columnsvà nhận được một lỗi không hợp lệ. Làm cách nào để chọn Ô tiêu đề để áp dụng những thay đổi đó?

Tôi có một vấn đề nhỏ khác. Khi tôi chạy chương trình, nó trông như thế này.

Thay đổi căn chỉnh văn bản của ô tiêu đề DataGridView và kích thước phông chữ

Lưu ý Ô đầu tiên được chọn theo mặc định do đó nó có màu Xanh lam. Chắc chắn nó không ảnh hưởng gì nhưng nó chỉ trông hơi xấu xí và không được gọn gàng. Có thể ngăn nó chọn Ô như vậy không?

24 hữu ích 1 bình luận 82k xem chia sẻ
45

Hãy thử điều này (lưu ý rằng tôi đang sử dụng Cột ở đây chứ không phải Hàng):

foreach(DataGridViewColumn col in dgvBreakDowns.Columns)
{
    col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
    col.HeaderCell.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel);
}

Đối với việc bỏ chọn ô, hãy thử dgvBreakDowns.ClearSelection()

45 hữu ích 3 bình luận chia sẻ
6

hoặc chỉ cần thử cái này:

dgvBreakDowns.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter;
6 hữu ích 0 bình luận chia sẻ
1

Bạn có thể sử dụng ColumnHeadersDefaultCellStyle.Alignmentvới MiddleCenterlàm giá trị của nó. Kiểm tra mã bên dưới:

dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
1 hữu ích 0 bình luận chia sẻ
0

Chỉ để tham khảo; có một số điều cần xem xét để điều khiển hiển thị các Kiểu tùy chỉnh một cách chính xác. Trong tình huống này liên quan đến Tiêu đề cột; nhưng những điều này áp dụng cho các tùy chỉnh hơn nữa:

  • Đặt: "dataGridView.EnableHeadersVisualStyles" thành false.
  • Áp dụng các kiểu sau khi DatagridView là Hiển thị.
  • Để căn chỉnh các Cột Tiêu đề; " AutoSizeColumnMode " phải được Đặt thành Điền.

Để đảm bảo rằng tất cả các Kiểu tùy chỉnh được áp dụng sau khi Kiểm soát được Hiển thị; bạn có thể sử dụng Sự kiện " DataGridView_VbrokenChanged ".


Sự kiện đã thay đổi có thể nhìn thấy DataGridView

/// <summary> Occurrs whenever the Control gets visible. </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DataGridView_VisibleChanged(object sender, EventArgs e)
{
    if (dataGridView.Visible)
    {
        DataGridView_AutoSizeColumn();
        DataGridView_CentreHeaders();
        // Etc...
    }
}

Chế độ tự động kích thước cột tiêu đề

private void DataGridView_AutoSize()
{
   var col = dataGridView.Columns;

   for (int i = 0; i < col.Count; i++)
   {
      if (i == 0) { col[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
      if (i == 1) { col[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
      // Etc...
    }
}

Văn bản và Đặt Phông chữ của Cột Tiêu đề Trung tâm

/// <summary> Centre Columns Headers. </summary>
private void DataGridView_CentreHeaders()
{
    // Centre Column Cells Content
    dataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;

    // Centre (Column and Row) Headers    
    dataGridView.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

    // Set Font
    dataGridView.ColumnHeadersDefaultCellStyle.Font = new Font("Arial", 11F, FontStyle.Regular, GraphicsUnit.Pixel);
}
0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# datagridview , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading