Hallo, möchte mir mit Visual C# in einer Windows Form ein Feld von 8 Zeilen und 8 Spalten anlegen. In den einzelnen Feldern sollen Zahlenwerte angezeigt werden. Die Felder sollen wie in Excel editierbar sein. Nun habe ich schon Textboxen aneinander gereiht. Diese stellen mir die Funktion die ich benötige. Das Eingeben und Anzeigen von Text. Soweit bestens. Aber bei 64 Textboxen leidet die Performance stark. Mit DataGridView und ListView habe ich auch schon bischen experimentiert. Allerdings scheint mir das derzeit etwas kompliziert. Suche quasi eine Funktion oder ein Tool wo ich sagen kann: Zeichne mir ein Feld von x Spalten Y Zeilen Und ich kann wie bei einer Textbox z.B. das Feld x.y editieren und den dort eingegebenen Wert z.B. in einem anderen x.y ausgeben. Bei einer "ListView" habe ich es bereits geschafft, Text in Feldern auszugeben. Nur scheitert es da gerade am Text eingeben über das Feld in der "ListView". Würde mich über Hilfe freuen.
Was du suchst, ist genau ein DataGrid bzw. ein DataGridView. Wenn dir das jetzt etwas kompliziert in der Bedienung vorkommt, dann lässt sich das nicht ändern. Da musst du durch. www.codeproject.com www.codeguru.com Besonders den ersten Link kann ich dir nur ans Herz legen. Gib dort einfach mal im Suchfeld "Grid C#" ein und du solltest genügend Artikel finden, die dich weiter bringen.
Hallo, habe es nun geschafft, ein Feld von 8*8 Zellen zu erstellen. Den Spalten Header ließ ich mal eingeblendet und den Zeilen Header habe ich ausgeblendet. Gibt man in der letzten Zeile einen Wert ein, so wird -gewollt- nicht automatisch eine neue Zeile angehängt. (Anhang) Das 8*8 Feld habe ich so erzeugt. dataGridView1.ColumnCount = 8; // legt Anzahl der Spalten fest dataGridView1.RowCount = 8; // legt Anzahl der Zeilen fest Nun komme ich allerdings nicht dahinter, wie ich die einzelnen Zellen auslesen kann. Oder umgekehrt, mit welchem Befehl ich den einzelnen Zellen einen Wert aus z.B. einem Array zuweisen kann. Für Bemerkungen in die richtige Richtung dankbar. Gruß
Ich bin mir nicht ganz sicher, aber das müsste über die "Items" Auflistung gehen.
Hallo, das mit dem "Items" funktioniert wohl nur in Verbindung mit einer "ListView". Habe mich nun vorerst auf DataGridView festgelegt. Habe irgendwo gelesen, dass ich meine Werte zuerst in eine "DataTable" ablegen muss und diese DataTable dann an das DataGrid "binde". dataGridView1.DataSource = aNewDataTable; Also mein Data Grid ist 8*8 Zellen. Wie kann ich nun in aNewDataTable die Zelle 1,1 mit z.B. 8 befüllen und die Zelle 2,3 mit z.B. 7 ??? Nach abarbeiten dieser Anweisung dataGridView1.DataSource = aNewDataTable; sollte dann die 8 und die 7 an entsprechender Stelle im Grid auftauchen. Wie kann ich andererseits Informationen die ich in das Data Grid eintippe auslesen??? Wäre nett, wenn jemand der sich auskennt, ein paar Zeilen Code tippen könnte. Vielleicht für ein 2*2 Feld. Einmal Werte zuweisen und Werte auslesen. Danke
1 | using System; |
2 | using System.Collections.Generic; |
3 | using System.ComponentModel; |
4 | using System.Data; |
5 | using System.Drawing; |
6 | using System.Text; |
7 | using System.Windows.Forms; |
8 | |
9 | namespace DGTest |
10 | {
|
11 | public partial class frmMain : Form |
12 | {
|
13 | DataTable m_dtField; |
14 | |
15 | public frmMain() |
16 | {
|
17 | InitializeComponent(); |
18 | |
19 | //Tabelle mit 8 Spalten anlegen
|
20 | m_dtField = new DataTable(); |
21 | for ( int i=0; i<8; i++ ) |
22 | m_dtField.Columns.Add( i.ToString(), System.Type.GetType( "System.String" ) ); |
23 | |
24 | //8 Reihen hinzufügen
|
25 | for ( int i=0; i<8; i++ ) |
26 | {
|
27 | DataRow drOneRow = m_dtField.NewRow(); |
28 | |
29 | for ( int j=0; j<8; j++ ) |
30 | drOneRow[j] = ( ( i*8 ) + j ).ToString(); |
31 | |
32 | m_dtField.Rows.Add( drOneRow ); |
33 | }
|
34 | }
|
35 | |
36 | private void btnTest_Click( object sender, EventArgs e ) |
37 | {
|
38 | MessageBox.Show( (String) m_dtField.Rows[Int32.Parse( txtRow.Text )][Int32.Parse( txtColumn.Text )] ); |
39 | }
|
40 | |
41 | private void frmMain_Load( object sender, EventArgs e ) |
42 | {
|
43 | dgField.DataSource = m_dtField; |
44 | }
|
45 | |
46 | }
|
47 | }
|
Wobei dgField das DataGrid ist, frmMain die Form, txtRow und txtColumn jeweils ein Textfeld und btnTest ein Button. Im Anhang als fertiges Projekt.
Hallo, habe nun eine für mich zufriedenstellende Lösung gefunden. Für alle die, die einfach nur Werte aus einem Array oder Konstanten oder vergleichbares in einem "Kastenfeld" anzeigen oder Zellen aus dem "Feld" auslesen wollen, hier meine Lösung. private void button1_Click(object sender, EventArgs e) { dataGridView1.ColumnCount = 3; // legt Anzahl der Spalten fest dataGridView1.RowCount = 4; // legt Anzahl der Zeilen fest dataGridView1[0, 0].Value = 0; dataGridView1[0, 1].Value = 1; dataGridView1[0, 2].Value = 2; dataGridView1[1, 0].Value = 10; } private void button2_Click(object sender, EventArgs e) { a = Convert.ToByte(dataGridView1[0, 0].Value); a = Convert.ToByte(dataGridView1[0, 1].Value); a = Convert.ToByte(dataGridView1[0, 2].Value); a = Convert.ToByte(dataGridView1[1, 0].Value); } Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.