DataGridView befüllen
-
Hallo
Ich habe ein DataGridView das ich befüllen will.
Im Internet habe ich zum befüllen folgenden Code gefunden.DataGridView.Rows[1]->Cells[1]->Value = wert;
Ich bekomme folgende Fehlermeldung " Links von ".Rows" muss sich eine Klasse/Struktur/Union befinden. ".
Was mache ich falsch?
Gruß
-
DataGridView->Rows[1]->Cells[1]->Value = wert;
-
Hallo
Danke für deine Antwort aber die Fehlermeldung ist geblieben.
Könnte es ein Problem sein das ich das DataGridView (Form2) aus Form1 befüllen will?
Gruß
-
Du musst eine Instanz verfügbar haben. Wenn DataGridView nicht der Name einer Instanz ist, leg eine an. Ein paar Details zu "Form1" und "Form2" findest Du in der FAQ. Zusätzlich schau Dir im Grundlagenbuch mal das Thema Klassen Objekte und Instanzen an. Ohne das wissen hakst Du immer wieder an solchen dingen.
-
Hallo
Jetzt bekomme ich nachdem ich das Programm gestartet habe folgende Fehlermeldung.
*Eine nicht behandelte Ausnahme des Typs "System.ArgumentOutOfRangeException" ist in mscorlib.dll aufgetreten.
Zusätzliche Informationen: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein.*
Gruß
-
Tja, was mag Dir diese Meldung wohl sagen?
Du hast wahrscheinlich noch gar keine "Row" in deinem Grid! Bevor du also darauf
zugreifen kannst, solltest du dataGridView1->Rows->Add() aufrufen.Schau Dir doch mal die MSDN an. Da findest du die Grundlagen...
Viel Erfolg,
Dappeljuh
-
Hallo
Doch es sind Rows vorhanden. Aber er findet das DataGridView im Form2 nicht.
Gruß
-
Poste mal deinen Code.
-
Hallo
Hier der Code für das Formular mit dem DataGridView.
private: System::Void Form2_Load(System::Object^ sender, System::EventArgs^ e) { for (i = 0; i <= 3; i++) { Daten->ReadOnly = true; Daten->Font = gcnew System::Drawing::Font("MS Sans Serif",11); Daten->Columns[i]->Width = 50; } for (r = 0; r <= 10; r++) { Daten->Rows->Add(); Daten->Font = gcnew System::Drawing::Font("MS Sans Serif",11); Daten->Rows[r]->Height = 27; } }
Und hier der Code für das MDI Formular wo ich die Daten einlesen will.
private: System::Void mnu_Open_Click(System::Object^ sender, System::EventArgs^ e) { String^ Inhalt; OpenFileDialog^ dlg = gcnew OpenFileDialog(); dlg->Filter = "BFile-Dateien (b.*)|b.*"; dlg->AddExtension = true; dlg->DefaultExt = "tbd"; if (System::Windows::Forms::DialogResult::OK == dlg->ShowDialog()) { try { IO::StreamReader^ rdr = gcnew IO::StreamReader(dlg->OpenFile(),System::Text::Encoding::UTF7); Inhalt = rdr -> ReadToEnd(); rdr->Close(); } catch (Exception^ ex) { MessageBox::Show("Datei konnte nicht gelesen werden"); } DataGridView^ Daten = gcnew DataGridView(); Daten->Rows[0]->Cells[0]->Value = Inhalt; } }
Vielen Dank für deine Hilfe.
Gruß
-
Hi,
zunächst einmal solltest du das Layout des dataGridViews mit dem Designer festlegen. Das spart Zeit und eventuelle Fehler...
DataGridView^ Daten = gcnew DataGridView(); Daten->Rows[0]->Cells[0]->Value = Inhalt;
Hast du jetzt in 2 unterschiedlichen Forms jeweils ein dataGridView? Oder wie verstehe ich das?
Dann müsstest du mit Eigenschaften(properties) arbeiten um die Daten von einer Form zur anderen zu transportieren...
-
Hallo
Ich möchte über ein Menü in Formular1 eine Datei öffnen und die Daten in das DataGridView in Formular2 eintragen.
Gruß
-
Und das passiert hier:
DataGridView^ Daten = gcnew DataGridView(); Daten->Rows[0]->Cells[0]->Value = Inhalt;
Richtig?
Gilt denn das Form2LoadEvent für dieses dataGridView?
Ich vermute mal nicht, oder? Dann müsstest du in Form2 ein Property zum Setzen der Werte integrieren...Bist du den Code schon mit dem Debugger durchgegangen?
-
Hallo
Ja das Form2LoadEvent gilt für das dataGridView.
Wie müßte der Code für das Setzen der Werte lauten?
Gruß
-
Schau mal in der Faq nach property...
Tritt die Exception denn an der Stelle
Daten->Rows[0]->Cells[0]->Value = Inhalt;
auf? Das kannst du mit dem Debugger feststellen...
Falls ja, lass dir mal die Anzahl der Rows und Cells per MessageBox zurückgeben. Ich vermute immer noch das da gar keine Row drin ist...
PS Überprüfe mal den Wert von Inhalt. Vielleicht gibt der Reader ja nen nullptr zurück... Kannst ja mal spasseshalber nen anderen Wert übergeben. Z.B. "Test"...
-
Hallo
Ja die Exception tritt genau an der Stelle auf.
Es sind Rows enthalten. Wenn ich zum testen den Befehl "Daten->Rows[0]->Cells[0]->Value = "test";" im Form2 (wo sich das DataGridView befindet) ausführe steht auch "test" im Grid drin. Auch mit dem Befehl "int Test = Daten->RowCount;" liest er mir die Anzahl der Rows aus.
Aber ich möchte ja aus Form1 auf das DataFridView in Form2 zugreifen.
Gruß
-
Also soll es ein property sein...
public: property dataGridViewRow^ Row { String^ get() { return dataGridView1->Rows[0]; } void set(dataGridViewRow^ argRow) { dataGridView1->Rows[0] = argRow; } }
So, oder so ähnlich sollte es klappen. Ob´s ne row oder nen Array oder sonst was ist, musst du selbst entscheiden...
PS Habs nicht comlipiert... eventuelle Syntax Fehler