2009-06-26 12 views
4

DataGridView (winforms)에서 "선택 스타일"을 어떻게 변경합니까?DataGridView 선택한 셀 스타일

+0

내 질문을 명확히했습니다. 나는 의미 : 셀 _whole_ 보이는 (스타일, 배경 포함) 변경 _is_ 선택한 _when_ 선택됩니다. 시각적 인 변화를 보지 못한다면 스타일을 변경할 필요가 없습니다. 오해에 깊은 죄송합니다 :-(. 나의 가난한 영어 파업 다시. 미안) - : –

답변

5

쉽게 그리드의 DefaultCellStyle의 SelectedBackColor 및 SelectedForeColor에 값을 할당하여 데 ForeColor 및 selcted 세포의 배경색을 변경할 수 있습니다 . 당신이 작업을 수행해야하는 경우

더 당신은 당신에게 인 selectionchanged 이벤트를 처리 할 필요가 스타일링

편집 :

using System.Drawing.Font; 

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
     { 

      foreach(DataGridViewCell cell in ((DataGridView)sender).SelectedCells) 
     { 
      cell.Style = new DataGridViewCellStyle() 
      { 
       BackColor = Color.White, 
       Font = new Font("Tahoma", 8F), 
       ForeColor = SystemColors.WindowText, 
       SelectionBackColor = Color.Red, 
       SelectionForeColor = SystemColors.HighlightText 
      }; 
     } 
     } 
+0

SelectedBackColor, SelectedForeColor 확인을 누릅니다. differents 셀에 다른 색상을 설정할 수있는 방법이없는 것 같습니다. :-( –

+0

SelectedBackColor 및 SelectedForeColor를 DefaultCellStyle 속성에 사용하면 선택된 셀에 동일한 색상이 적용됩니다. 스타일을 다른 셀로 설정하려면 다시 한번 SelectionChanged 이벤트를 처리하고 일부 조건부 할당 선택한 셀의 행 또는 열을 기반으로합니다. – Luis

+0

고마워요 !!!! 정확히 내가 무엇을 찾고 있었는지 ... 아직 투표 할 수없는 것은 수치스러운 일입니다! –

1

GridView의 SelectedCells property과 DataGridViewCell의 Style property을 사용하십시오.

+0

좋지 않아. 이 코드를 사용하여 빈 폼 DataGridView를 테스트 (첫 번째 선택된 셀 변경) 개인 무효 dataGridView1_SelectionChanged (객체 송신자있는 EventArgs E) { dataGridView1.SelectedCells [0] = .Style.BackColor Color.Beige; } 스타일을 선택하면 다른 셀로 변경된 후에 만 ​​표시됩니다. –

1

은 DataGridView에에 인 selectionchanged 이벤트를 처리하고이 같은 보이는 코드를 추가

private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow row in this.dataGridView1.Rows) 
     { 
      foreach (DataGridViewCell c in row.Cells) 
      { 
       c.Style = this.dataGridView1.DefaultCellStyle; 
      } 
     } 


     DataGridViewCellStyle style = new DataGridViewCellStyle(); 
     style.BackColor = Color.Red; 
     style.Font = new Font("Courier New", 14.4f, FontStyle.Bold); 
     foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells) 
     { 
      cell.Style = style; 
     } 
    } 
+0

테스트 됨. 불완전한. 배경은 적용되지 않지만 글꼴은 적용됩니다. 이상한 –

+1

배경 IS가 적용되지만 '선택'의 색상이 우선 적용됩니다. 편집 할 셀을 두 번 클릭하면 배경색이 표시됩니다. – BFree

0
(기타 코드 샘플 [fullrowselect 같이] 선택한 여러 셀에 대한 조정, 오류를했다)

topic에 제공된 솔루션을 사용해 볼 수 있습니다. 나는 그것을 테스트하고 승인했다.

희망을 얻었습니다.

0

이렇게하면 선택한 셀에 컬러 테두리를 그릴 수 있습니다.

private void dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex >= 0 && e.ColumnIndex >= 0) 
    { 
     if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected == true) 
     { 
      e.Paint(e.CellBounds, DataGridViewPaintParts.All & ~DataGridViewPaintParts.Border); 
      using (Pen p = new Pen(Color.Red, 1)) 
      { 
       Rectangle rect = e.CellBounds; 
       rect.Width -= 2; 
       rect.Height -= 2; 
       e.Graphics.DrawRectangle(p, rect); 
      } 
      e.Handled = true; 
     } 
    } 
} 
관련 문제