1

Ich muss einen Platzhalter anzeigen, der eine Zeichenfolge in den ersten beiden Spalten der ersten Zeile der Datagrid-Ansicht in Winforms enthält. Der Platzhalter soll angezeigt werden, wenn das Datagrid leer ist.Platzhaltertext in DataGridView-Zellen anzeigen

enter image description here

+0

Haben Sie wirklich ein Label Control bedeuten? Oder willst du einfach den Textwert der beiden Zellen setzen ?? – TaW

+0

Eigentlich versuche ich, das Label als Platzhalter in diesen Zellen zu platzieren. Wenn also das Datagridview leer ist, kann ich es auf diesen Zellen anzeigen. – biff

+0

Bitte ändern Sie den Titel und die Beschreibungen der Fragen basierend auf Ihrem neuen Kommentar. Sie möchten den Platzhaltertext für die ersten beiden Spalten zeichnen. Es scheint auch, dass Sie keinen Klick auf die Schaltfläche brauchen, Sie wollen sie nur auf Zellen zeigen, wenn die Zelle leer ist. –

Antwort

2

Sie müssen CellPainting Ereignis behandeln und sich Platzhalter ziehen:

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

Das ist richtig. –

+0

Vielen Dank für die Hilfe. – biff

0

So können Sie diese (Arbeit für Textbox) verbessern und ändern für 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..."; 
} 

Hinweis: in myTxtbx.Text = "Enter text here..."; und if (myTxtbx.Text == "Enter text here...") die Zeichenfolge „Geben Sie hier Text ... " muss gleich sein.

+0

** 1) ** Es gibt keine 'TextBox ', bevor Sie in den Bearbeitungsmodus gehen. ** 2) ** Sie sollten "TextBox" keinen Text zuweisen. Sie sollten Platzhalter –

+0

malen Meine Antwort ist nicht die beste, aber ich habe eine Idee der Verwendung geschrieben. –

Verwandte Themen