2

Winforms のデータグリッド ビューの最初の行の最初の 2 列に文字列を含むプレースホルダーを表示する必要があります。データグリッドが空の場合、プレースホルダーが表示されます。

ここに画像の説明を入力

4

3 に答える 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 に答える