Imports System.ComponentModel Imports System.Deployment Imports System.Deployment.Application Public Class frmMain Private _dataPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "Gaesteliste.xml") 'I should not need this for now - we do not work with mouse pointer rows index for selection but we select them with left-click. ' and with ctrl select (left click, multi-select!) 'Private _rowIndex As Integer = 0 Private Sub LoadWindowPosition() 'http://christ-offer.blogspot.co.at/2012/02/vbnet-remember-application-window-size.html 'TODO: Change this to get loaded from registry. I'm not a huge fan of my.settings ;) Dim ptLocation As System.Drawing.Point = My.Settings.WindowLocation If (ptLocation.X = -1) And (ptLocation.Y = -1) Then Return End If Dim bLocationVisible As Boolean = False For Each S As Screen In Screen.AllScreens If S.Bounds.Contains(ptLocation) Then bLocationVisible = True Exit For End If Next If Not bLocationVisible Then Return End If Me.StartPosition = FormStartPosition.Manual Me.Location = ptLocation Me.Size = My.Settings.WindowSize End Sub Private Sub frmMain_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing Me.GästeDataSet.WriteXml(_dataPath) My.Settings.WindowLocation = Me.Location My.Settings.WindowSize = Me.Size End Sub Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try Me.GästeDataSet.ReadXml(_dataPath) Catch ex As Exception ' do nothing, that file gets created when we close the application ;) End Try LoadWindowPosition() ' Setting colors of grids to some fancy ones :) 'TODO: Save some colors in registry. Me.DataGridView1.RowsDefaultCellStyle.BackColor = Color.Azure Me.DataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige Dim Info As UpdateCheckInfo If ApplicationDeployment.IsNetworkDeployed Then Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment Info = AD.CheckForDetailedUpdate If Info.UpdateAvailable Then statusVersionLabel.Text = "Version " & AD.CurrentVersion.ToString & " (Update verfügbar: " & Info.AvailableVersion.ToString & ")" statusVersionLabel.Tag = "update" Else statusVersionLabel.Text = "Version " & AD.CurrentVersion.ToString End If Else statusVersionLabel.Text = "Lokale Version: " & My.Application.Info.Version.ToString End If End Sub Private Sub InfoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles InfoToolStripMenuItem.Click Dim oForm As New frmAbout() oForm.ShowDialog() oForm.Dispose() oForm = Nothing End Sub Private Sub OnlineHilfeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OnlineHilfeToolStripMenuItem.Click Process.Start("http://klamm.io") End Sub Private Sub UpdateToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UpdateToolStripMenuItem.Click Dim Info As UpdateCheckInfo If ApplicationDeployment.IsNetworkDeployed Then Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment Info = AD.CheckForDetailedUpdate If Info.UpdateAvailable Then statusVersionLabel.Text = "Version " & AD.CurrentVersion.ToString & " (Update verfügbar: " & Info.AvailableVersion.ToString & ")" statusVersionLabel.Tag = "update" If MsgBox("Ein Update ist verfügbar und wird jetzt installiert." + Chr(13) + "Die Anwendung wird danach neu gestartet.", vbOKCancel) = vbOK Then AD.Update() System.Windows.Forms.Application.Restart() End If Else statusVersionLabel.Text = "Version " & AD.CurrentVersion.ToString MsgBox("Es ist kein Update verfügbar.") End If Else statusVersionLabel.Text = "Lokale Version: " & My.Application.Info.Version.ToString MsgBox("Die Anwendung wurde nicht aus dem Internet bezogen und kann daher nicht aktualisiert werden.") End If End Sub Private Sub LöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LöschenToolStripMenuItem.Click For Each Row As DataGridViewRow In DataGridView1.SelectedRows Me.DataGridView1.Rows.RemoveAt(Row.Index) Next 'Me.DataGridView1.Rows(Me.DataGridView1.Rows.Count - 1).Selected = True Try Me.DataGridView1.CurrentRow.Selected = True Catch ex As Exception 'nothing :D End Try End Sub Private Sub HinzufügenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HinzufügenToolStripMenuItem.Click Dim oForm As New frmPerson() oForm.Tag = "add" oForm.ShowDialog() 'http://www.vb-helper.com/howto_net_dataset_autonumber.html Dim dt As DataTable = GästeDataSet.Tables("Gäste") Dim dr As DataRow = dt.NewRow() With dr .Item("Nachname") = oForm.txtNachname.Text .Item("Vorname") = oForm.txtVorname.Text .Item("Straße") = oForm.txtStrasse.Text .Item("PLZ") = oForm.txtPLZ.Text .Item("Ort") = oForm.txtOrt.Text .Item("Land") = oForm.cboLand.Text .Item("Telefon") = oForm.txtTelefon.Text .Item("Email") = oForm.txtEmail.Text .Item("Anmerkung") = oForm.txtAnmerkung.Text .Item("Stammgast") = oForm.chkStammgast.Checked .Item("Blockiert") = oForm.chkBlacklist.Checked End With Try If oForm.DialogResult = vbOK Then dt.Rows.Add(dr) End If Catch ex As Exception MsgBox("Gast konnte nicht hinzugefügt werden." & vbCrLf & ex.Message) End Try oForm.Dispose() oForm = Nothing End Sub Private Sub BearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BearbeitenToolStripMenuItem.Click Dim oForm As New frmPerson() oForm.Tag = "edit" With oForm .txtID.Text = Me.DataGridView1.SelectedCells(0).Value.ToString .txtNachname.Text = Me.DataGridView1.SelectedCells(1).Value.ToString .txtVorname.Text = Me.DataGridView1.SelectedCells(2).Value.ToString .txtStrasse.Text = Me.DataGridView1.SelectedCells(3).Value.ToString .txtPLZ.Text = Me.DataGridView1.SelectedCells(4).Value.ToString .txtOrt.Text = Me.DataGridView1.SelectedCells(5).Value.ToString .cboLand.Text = Me.DataGridView1.SelectedCells(6).Value.ToString .txtTelefon.Text = Me.DataGridView1.SelectedCells(7).Value.ToString .txtEmail.Text = Me.DataGridView1.SelectedCells(8).Value.ToString .txtAnmerkung.Text = Me.DataGridView1.SelectedCells(11).Value.ToString .chkStammgast.Checked = CBool(Me.DataGridView1.SelectedCells(9).Value) .chkBlacklist.Checked = CBool(Me.DataGridView1.SelectedCells(10).Value) End With 'MsgBox(CType(Me.DataGridView1.SelectedCells(10).Value, Boolean)) 'TODO: Lookup how to edit an entry without modifying the autoincrement_value (without changing the ID) 'i first thought on deleting and re-creating the entry, but that would have created the person with another ID number oForm.ShowDialog() oForm.Dispose() oForm = Nothing End Sub 'We should not have to use this any more. but for backup we left this here... 'Private Sub DataGridView1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseUp ' If e.Button = MouseButtons.Right Then ' Me.DataGridView1.Rows(e.RowIndex).Selected = True ' Me._rowIndex = e.RowIndex ' Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(e.RowIndex).Cells(1) ' Me.mnuContext.Show(Me.DataGridView1, e.Location) ' mnuContext.Show(Cursor.Position) ' End If 'End Sub Private Sub DataGridView1_MouseUp(sender As Object, e As MouseEventArgs) Handles DataGridView1.MouseUp If e.Button = MouseButtons.Right Then If Me.DataGridView1.SelectedRows.Count < 1 Then HinzufügenToolStripMenuItem.Visible = True BearbeitenToolStripMenuItem.Visible = False LöschenToolStripMenuItem.Visible = False Else If Me.DataGridView1.SelectedRows.Count > 1 Then HinzufügenToolStripMenuItem.Visible = True BearbeitenToolStripMenuItem.Visible = False LöschenToolStripMenuItem.Visible = True Else HinzufügenToolStripMenuItem.Visible = True BearbeitenToolStripMenuItem.Visible = True LöschenToolStripMenuItem.Visible = True End If End If Me.mnuContext.Show(Me.DataGridView1, e.Location) mnuContext.Show(Cursor.Position) End If End Sub Private Sub statusVersionLabel_Click(sender As Object, e As EventArgs) Handles statusVersionLabel.Click 'If statusVersionLabel.Tag = "update" Then UpdateToolStripMenuItem_Click(sender, Nothing) 'End If End Sub End Class