나는 윈폼에서 데이터 그리드 뷰의 첫 번째 행의 첫 두 컬럼에 문자열을 포함하는 자리를 표시해야합니다. 자리 표시자는 DataGrid가 비어있을 때 표시됩니다.표시 자리 표시 자 텍스트
답변
당신은 자신을 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;
}
}
이것이 맞습니다. –
고맙습니다. – biff
그래서, 당신이 (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...")
"여기에 텍스트를 입력합니다 ... "은 같아야합니다.
** 1) ** 편집 모드로 들어가기 전에 'TextBox'가 없습니다. ** 2) ** TextBox에 텍스트를 지정하면 안됩니다. 당신은 장소 홀더 페인트해야합니다 –
내 대답은 최고 아니지만, 사용법에 대한 아이디어를 썼습니다. –
당신이 정말 Label 컨트롤을 의미합니까? 아니면 단순히 두 셀의 텍스트 값을 설정 하시겠습니까 ?? – TaW
실제로 그 셀에 자리 표시 자로 레이블을 배치하려고합니다. 그래서 DataGridview가 비어 있으면 해당 셀에 표시 할 수 있습니다. – biff
새 코멘트를 토대로 질문 제목과 설명을 변경하십시오. 첫 번째 2 열의 자리 표시 자 텍스트를 그릴 수 있습니다. 또한 버튼 클릭이 필요없는 것 같습니다. 셀이 비어있을 때 셀에 표시하고 싶을뿐입니다. –