Form Rückstände auf anderem Form

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von schnibli.

    Form Rückstände auf anderem Form

    Hallo Zusammen,

    Wenn ich bei meiner Anwendung die 2. Form schliesse habe ich Rückstände auf der ersten Form. Sihe bild

    Weis jemand wie ich dies vermeiden kann?

    Dies ist nur der Fall wenn die 2. Form auf dem 1.Form war als es geschlossen wurde.
    Bilder
    • Fehler.JPG

      23,93 kB, 231×142, 356 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „schnibli“ ()

    @Dancger

    Er hat einfach vergessen die billrulz.dll in den Projekteigenschaften zu Importieren.
    Dadurch wird der Cursor auf makemouse.jumpy gesetzt. Das führt zu dem Problem!
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    VB.NET-Quellcode

    1. kontakte.Show()

    Und beendet:

    VB.NET-Quellcode

    1. Dim text As String = ""
    2. For Each Litem As String In Start.ListBox2.Items
    3. text &= vbCrLf & Litem
    4. Next
    5. IO.File.WriteAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Ordner\kontakte.txt", text)
    6. 'Form schliessen
    7. If System.IO.File.Exists(System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "Ordner\kontakte.txt")) Then
    8. Dim lines() As String = System.IO.File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Ordner\kontakte.txt")
    9. End If
    10. Close()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „schnibli“ ()

    @schnibli

    Der Code ist zwar nicht schön, aber sollte den von dir beschriebenen Fehler nicht verursachen.

    Vielleicht hängst du mal ein Projekt mit dem Fehler an damit wir das Testen können.
    Vielleicht liegt der Fehler nicht im Code sondern in den Eigenschaften.

    edit:
    Oder du baust dein Programm neu und schaust ob der Fehler immer noch auftritt.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Das Programm hat ca 20 Foren aber nur bei diesem Passiert es...

    Vollständiger code:

    VB.NET-Quellcode

    1. Imports System.Reflection
    2. Imports Outlook = Microsoft.Office.Interop.Outlook
    3. Imports System.Windows
    4. Public Class kontakte
    5. Private Sub kontakte_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    6. Dim text As String = ""
    7. For Each Litem As String In Start.ListBox2.Items
    8. text &= vbCrLf & Litem
    9. Next
    10. IO.File.WriteAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Ordner\kontakte.txt", text)
    11. If System.IO.File.Exists(System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "Ordner\kontakte.txt")) Then
    12. Dim lines() As String = System.IO.File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\Ordner\kontakte.txt")
    13. End If
    14. Close()
    15. End Sub
    16. Private Sub kontakte_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    17. Dim p() As Process = Process.GetProcessesByName("Outlook")
    18. If p.Length = 0 Then
    19. Dim ExterneAnwendung As New System.Diagnostics.Process()
    20. ExterneAnwendung.StartInfo.FileName = "outlook.exe"
    21. ExterneAnwendung.Start()
    22. End If
    23. Dim oApp As Outlook.Application = New Outlook.Application()
    24. Dim contact As Object
    25. ' Get NameSpace and Logon.
    26. Dim oNS As Outlook.NameSpace = oApp.GetNamespace("mapi")
    27. oNS.Logon("Outlook", Missing.Value, False, True)
    28. Dim oContacts As Outlook.MAPIFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts)
    29. Dim oItems As Outlook.Items = oContacts.Items
    30. Dim oAppt As Outlook.ContactItem = oContacts.Items.GetNext
    31. Dim contactscounter = oContacts.Items.Count
    32. Dim i As Integer
    33. For Each Contact1 As Outlook.ContactItem In oItems
    34. Dim NewKontakteRow As DataRow = Kontakt.Tables("kontakte").NewRow()
    35. NewKontakteRow("gespeicher") = Contact1.FileAs
    36. NewKontakteRow("vorname") = Contact1.FirstName
    37. NewKontakteRow("nachname") = Contact1.LastName
    38. NewKontakteRow("business_phone") = Contact1.BusinessTelephoneNumber
    39. NewKontakteRow("mobile_phone") = Contact1.MobileTelephoneNumber
    40. NewKontakteRow("home_phone") = Contact1.HomeTelephoneNumber
    41. Kontakt.Kontakte.Rows.Add(NewKontakteRow)
    42. Start.ListBox2.Items.Add(Contact1.FileAs & ";" & Contact1.FirstName & ";" & Contact1.LastName & ";" & Contact1.LastName & ";" & Contact1.BusinessTelephoneNumber & ";" & Contact1.MobileTelephoneNumber & ";" & Contact1.HomeTelephoneNumber)
    43. Next
    44. ' Log off.
    45. oNS.Logoff()
    46. ' Clean up.
    47. oApp = Nothing
    48. oNS = Nothing
    49. oItems = Nothing
    50. oAppt = Nothing
    51. End Sub
    52. Private Sub KontakteDataGridView_CellContentClick(sender As Object, e As DataGridViewCellEventArgs)
    53. End Sub
    54. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    55. If RadioButton1.Checked = True Then
    56. Start.txt_nr.Text = Business_phoneTextBox.Text
    57. ElseIf RadioButton2.Checked = True Then
    58. Start.txt_nr.Text = Mobile_phoneTextBox.Text
    59. ElseIf RadioButton3.Checked = True Then
    60. Start.txt_nr.Text = Home_phoneTextBox.Text
    61. End If
    62. Close()
    63. End Sub
    64. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    65. Me.KontakteBindingSource.Filter = String.Format("[gespeicher]" & " LIKE '{0}%'", "*" & Me.TextBox1.Text, "typ Like " & " 'Artikel'")
    66. End Sub
    67. Private Sub KontakteDataGridView_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles KontakteDataGridView.CellPainting
    68. With KontakteDataGridView
    69. .RowsDefaultCellStyle.BackColor = Color.White
    70. .RowsDefaultCellStyle.ForeColor = Color.Black
    71. .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
    72. .AlternatingRowsDefaultCellStyle.ForeColor = Color.Black
    73. End With
    74. End Sub
    75. End Class


    Ich weis das mit dem DGV und der Listbox ist nicht so schön aber ich benötige dies so :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „schnibli“ ()

    Nutze me.close() anstelle von close.

    Aber auch bei diesem Code kann ich nichts finden was den beschriebenen Fehler produzieren würde.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Das finde ich z.b. nicht schön ;)

    VB.NET-Quellcode

    1. If System.IO.File.Exists(System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "BMU-Datenbank\kontakte.txt")) Then
    2. Dim lines() As String = System.IO.File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\BMU-Datenbank\kontakte.txt")
    3. End If

    könnte man so lösen

    VB.NET-Quellcode

    1. If File.Exists(Path.Combine(Environment.SpecialFolder.MyDocuments & "BMU-Datenbank\kontakte.txt")) Then
    2. Dim lines() As String = File.ReadAllLines(Environment.SpecialFolder.MyDocuments & "\BMU-Datenbank\kontakte.txt")
    3. End If

    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Vieleicht müsstest du mal kurz fragen was für eine Anwendung dies ist, und was sie beinhaltet bevor du sowas sagst.
    Darin sind kunden Daten ect .die niemand was angeht.

    Nicht böse gemeint aber ich kann aus "sicherheitsgründen" die app nicht hochladen.
    Versuch mal:
    Wenn die Anwendung diesen Fehler aufzeigt, packst du das Fenster und fährst mit dem Mauszeiger an den unteren Bildschirmrand (So ist nur noch der Fensterrahmen sichtbar). Danach wieder in die Mitte. Verschwindet dann die fehlerhafte Darstellung?

    Falls ja --> Ruf mal Me.Refresh auf der Form (Im Screenshot im Hintergrund) auf, sobald die Form davor geschlossen wurde.

    Ich hab da so ne Vermutung...
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Logo, ein 20 Formen-Projekt mal eben hier anzuhängen geht nicht. Das Problem aber so zu isolieren, dass man sich das mal ansehen kann, wäre schon hilfreich. Ich rate jetzt mal: Du instantiierst dein Form2 versehentlich zwei mal und öffnest es auch zwei mal - schließt es aber nur ein mal.

    Das wird es wohl nicht sein, daher würde mich interessieren, wie genau du dein Form2 aufrufst.
    Hallo Dancger, wie mienst du (Im Screenshot im Hintergrund), Ich soll

    VB.NET-Quellcode

    1. Me.Refreish()
    beim Schliessen des 2. Forms aufrufen?

    Erfinder des Rades: Ich habe eine ähndliche app geschrieben, bei der Trifft das Problem nicht auf.

    Form2 rufe ich wie oben beschrieben auf:

    VB.NET-Quellcode

    1. kontate.show
    Du musst zuerst die Forms instanzieren. Sprich:

    VB.NET-Quellcode

    1. 'Von
    2. Form1.Show()
    3. 'Nach
    4. Dim frm1 As New Form1
    5. frm1.Show()


    Zum aktualisieren:
    Soweit ich das verstanden habe, hast du zwei Formen. Die Erste ruft dann irgendwann die Zweite auf, und wenn du diese schliesst, bleiben Rückstände der zweiten Form auf der Ersten, oder?
    Ich nehme an, dass du die zweite Form mit Form2.ShowDialog() aufrufst. Nach dieser Zeile kannst du mal Me.Refresh() einfügen. Vielleicht hilfts
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    schnibli schrieb:

    Richtige initialisierung? ....
    Gugst Du hier.
    Normalerweise sorgt Windows dafür, dass ein wieder auftauchendes Fenster refreshed wird.
    Rufst Du die 2. Form modal oder nicht modal auf?
    Falls nicht modal: Hat die Form 1 in diesem Moment viel zu tun? Ist sie eingefroren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!