Benutzer mit den meisten Antworten
DataGridView / ReadOnly / Editier-Modus

Frage
-
Hallo zusammen,
in einem DataGridView möchte ich, dass der Benutzer nichts verändern kann (ReadOnly auf "true", soweit klar), er soll aber die Zellen per F2 in den Editier-Modus bringen können, damit er den Zellinhalt (oder einen Teil davon) markieren und in die Zwischenablage kopieren kann.
Wie kriege ich das hin?
Gruß,
Matthias
Antworten
-
Hallo Matthias,
Du könntest z.B. den Zellen-Editor mit Schreibschutz versehen, indem Du im DataGridView.EditingControlShowing-Handler die Eigenschaft ReadOnly auf true setzt. Dadurch kannst Du den Text selektieren, in die Zwischenablage kopieren, aber nicht bearbeiten:
using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Benutzer darf keine Zeilen hinzufügen oder löschen dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; // Im Handler vom EditingControlShowing wird // die Bearbeitung deaktiviert dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing; } void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { TextBoxBase tb = e.Control as TextBoxBase; if (tb != null) tb.ReadOnly = true; } private void Form1_Load(object sender, EventArgs e) { List<Person> personList = new List<Person> { new Person { FirstName="Jo", LastName="Metzinger"}, new Person { FirstName="Tina", LastName="Behrens"} }; dataGridView1.DataSource = personList; } } class Person { public string FirstName { get; set; } public string LastName { get; set; } } }
Gruß
Marcel- Als Antwort markiert Matthias Schuppe Donnerstag, 13. Oktober 2011 11:05
Alle Antworten
-
Hallo Matthias,
Du könntest z.B. den Zellen-Editor mit Schreibschutz versehen, indem Du im DataGridView.EditingControlShowing-Handler die Eigenschaft ReadOnly auf true setzt. Dadurch kannst Du den Text selektieren, in die Zwischenablage kopieren, aber nicht bearbeiten:
using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Benutzer darf keine Zeilen hinzufügen oder löschen dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; // Im Handler vom EditingControlShowing wird // die Bearbeitung deaktiviert dataGridView1.EditingControlShowing += dataGridView1_EditingControlShowing; } void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { TextBoxBase tb = e.Control as TextBoxBase; if (tb != null) tb.ReadOnly = true; } private void Form1_Load(object sender, EventArgs e) { List<Person> personList = new List<Person> { new Person { FirstName="Jo", LastName="Metzinger"}, new Person { FirstName="Tina", LastName="Behrens"} }; dataGridView1.DataSource = personList; } } class Person { public string FirstName { get; set; } public string LastName { get; set; } } }
Gruß
Marcel- Als Antwort markiert Matthias Schuppe Donnerstag, 13. Oktober 2011 11:05