Winforms のデータグリッド ビューの最初の行の最初の 2 列に文字列を含むプレースホルダーを表示する必要があります。データグリッドが空の場合、プレースホルダーが表示されます。
1448 次
3 に答える
5
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;
}
}
于 2016-11-03T09:42:49.593 に答える
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...";
}
注: inmyTxtbx.Text = "Enter text here...";
とif (myTxtbx.Text == "Enter text here...")
文字列"Enter text here..."は等しくなければなりません。
于 2016-11-03T09:30:48.023 に答える