1

나는 윈폼에서 데이터 그리드 뷰의 첫 번째 행의 첫 두 컬럼에 문자열을 포함하는 자리를 표시해야합니다. 자리 표시자는 DataGrid가 비어있을 때 표시됩니다.표시 자리 표시 자 텍스트

enter image description here

+0

당신이 정말 Label 컨트롤을 의미합니까? 아니면 단순히 두 셀의 텍스트 값을 설정 하시겠습니까 ?? – TaW

+0

실제로 그 셀에 자리 표시 자로 레이블을 배치하려고합니다. 그래서 DataGridview가 비어 있으면 해당 셀에 표시 할 수 있습니다. – biff

+0

새 코멘트를 토대로 질문 제목과 설명을 변경하십시오. 첫 번째 2 열의 자리 표시 자 텍스트를 그릴 수 있습니다. 또한 버튼 클릭이 필요없는 것 같습니다. 셀이 비어있을 때 셀에 표시하고 싶을뿐입니다. –

답변

2

당신은 자신을 CellPainting 이벤트를 처리 장소 홀더를 그릴 필요 :

void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex < 0 || e.ColumnIndex < 0)  /*If a header cell*/ 
     return; 
    if (!(e.ColumnIndex == 0 || e.ColumnIndex == 1) /*If not our desired columns*/ 
     return; 

    if(e.Value == null || e.Value == DBNull.Value) /*If value is null*/ 
    { 
     e.Paint(e.CellBounds, DataGridViewPaintParts.All 
      & ~(DataGridViewPaintParts.ContentForeground)); 

     TextRenderer.DrawText(e.Graphics, "Enter a value", e.CellStyle.Font, 
      e.CellBounds, SystemColors.GrayText, TextFormatFlags.Left); 

     e.Handled = true; 
    } 
} 
+0

이것이 맞습니다. –

+0

고맙습니다. – biff

0

그래서, 당신이 (Textbox에 대한 작업)을 개선하고 dataGrid.Text에 대해 변경할 수 있습니다

Textbox myTxtbx = new Textbox(); 
myTxtbx.Text = "Enter text here..."; 

myTxtbx.GotFocus += GotFocus.EventHandle(RemoveText); 
myTxtbx.LostFocus += LostFocus.EventHandle(AddText); 

public void RemoveText(object sender, EventArgs e) 
{ 
    if (myTxtbx.Text == "Enter text here...") { 
     myTxtbx.Text = ""; 
    } 
} 

public void AddText(object sender, EventArgs e) 
{ 
    if(String.IsNullOrWhiteSpace(myTxtbx.Text)) 
     myTxtbx.Text = "Enter text here..."; 
} 

참고 : 문자열 myTxtbx.Text = "Enter text here...";if (myTxtbx.Text == "Enter text here...") "여기에 텍스트를 입력합니다 ... "은 같아야합니다.

+0

** 1) ** 편집 모드로 들어가기 전에 'TextBox'가 없습니다. ** 2) ** TextBox에 텍스트를 지정하면 안됩니다. 당신은 장소 홀더 페인트해야합니다 –

+0

내 대답은 최고 아니지만, 사용법에 대한 아이디어를 썼습니다. –