| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Absturz DatagridView -> Programmabsturz (1408 mal gelesen)
|
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 27. Feb. 2009 08:52 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen Kollegen im VB- Forum, ich habe ein kleines Problem mit meinem Programm, ganz speziell mit meinem Datagridview. Dies führt zu einem Absturz des Programms, wenn ich eine neue Zeile hinzufüge und das Datagridview die Vertikale Scrollbar darstellen muss. Das äußert sich dann so, dass in dem Bereich, wo die Scrollbar sitzt, nur die Bar, ohne Pfeile oben und unten zu sehen ist und das ganze Programm einfriert. Ich arbeite im Moment mit Visual Basic 2008 Express Edition! Der Code für die Erstellung des DGV: Code: Public Sub Datagrid_Hinzufuegen() Try myDatagridView = New DataGridView frmHauptfenster.Controls.Add(myDatagridView) With myDatagridView .Name = "myDatagridView" .AutoGenerateColumns = False .ColumnCount = 3 .Location = New Point(10, 10) .Width = 622 .Height = 320 .Columns(0).HeaderText = "Dateiname" .Columns(0).Width = 130 .Columns(1).HeaderText = "Dateipfad" .Columns(1).Visible = True .Columns(1).Width = 320 .Columns(2).HeaderText = "Besitzer" .Columns(2).Width = 100 .AllowUserToResizeColumns = False .AllowUserToResizeRows = False .ReadOnly = True .Rows.Add(12) .RowsDefaultCellStyle.BackColor = Color.WhiteSmoke .AlternatingRowsDefaultCellStyle.BackColor = Color.Azure '.ScrollBars = ScrollBars.Vertical End With Catch ex As Exception Debug.Assert(False) MsgBox("Fehler: Wo: " & ex.StackTrace & " Was: " & ex.Message) End Try End Sub
Und noch der Code, welcher eine neue Zeile in das DGV einfügt: Code: Public Sub Datagrid_Fuellen(ByVal PfadKurz As String, ByVal PfadDateiNeu As String, ByVal besitzer As String) Try For i As Integer = 0 To myDatagridView.Rows.Count - 1 If myDatagridView.Rows(i).Cells(0).Value = PfadKurz Or _ myDatagridView.Rows(i).Cells(0).Value = Strings.Replace(PfadKurz, "~$", "") Then Exit Sub End If Next Dim row As String() = {PfadKurz, PfadDateiNeu, besitzer} myDatagridView.Rows.Add(row) row = Nothing PfadDateiNeu = "" 'myDatagridView.Refresh() Catch ex As Exception Debug.Assert(False) MsgBox("Fehler: Wo: " & ex.StackTrace & " Was: " & ex.Message) End Try End Sub
Wie schon oben erwähnt, das Problem tritt erst dann auf, wenn der sichtbare Bereich des DGV gefüllt ist und es nur noch möglich ist, in den weiteren Bereich zu Scrollen. Im Debug-Modus erhalte ich keine Fehlermeldung. Er durchläuft die Routinen völlig Fehlerfrei und erst dann wenn das Programmfenster wieder den Focus erhält, kommt es zum einfrieren dessen. Vielen Dank schon einmal für eure Mühe. Grüße Tobias [Diese Nachricht wurde von MWN am 27. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 (SP2 & SP1) / Win XP pro (SP1) & Win 2000 pro (SP4) AutoCAD Map 2000i / WinNT (SP6)
|
erstellt am: 14. Mrz. 2009 22:57 <-- editieren / zitieren --> Unities abgeben:          Nur für MWN
|
MWN Mitglied Dipl.-Ing.
 
 Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 15. Mrz. 2009 12:30 <-- editieren / zitieren --> Unities abgeben:         
Hallo Lars, vielen Dank für das Hilfeangebot. Hab mittlerweile herausgefunden, dass ich zufällig eine Multi - Threading - Anwendung erstellt habe, wobei sich mein Haupthread (der Codeausschnitt, den ich schon gepostet habe) und der zufällig erzeugte Nebenthread (FilesystemWatcher) in die Quere gekommen sind. Ich habe ganz einfach alles, was zum FileSystemWatcher gehörte (stand in einem eigenen Modul) mit in den Code meines UserForms gepackt und schon funktioniert alles. Trotzdem noch einmal vielen Dank und ein schönes Wochenende! Grüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |