[Risolto] allineamento di istanze di programma

di il
4 risposte

[Risolto] allineamento di istanze di programma

Ho un programma che l'utente può lanciare anche più di una volta, per cui vorrei posizionarlo in automatico.
Nell'evento Form_Load ho:

' calcolo quante istanze ho di questo programma
Dim nProg = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Count
' posiziono la finestra in basso, allineandola a sinistra, una vicina all'altra
Me.Location = New Point((nProg - 1) * Me.Width, My.Computer.Screen.WorkingArea.Height - Me.Height)

Il tutto funziona abbastanza benino, ma non capisco perchè rimane sempre dello spazio intorno.
Anche quando sono in debug, sebbene il valore Me.Left valga zero, ho spazio comunque a sinistra

Perchè ??

Grazie
Sergio

vedi immagine: https://www.sirjo.com/img.jpg

4 Risposte

  • Re: [Risolto] allineamento di istanze di programma

    Prova a postare anche il resto

  • Re: [Risolto] allineamento di istanze di programma

    Eccolo qui, anche se sinceramente non credo cambia qualcosa

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Dim nProg = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Count
    
            Me.Location = New Point((nProg - 1) * Me.Width, My.Computer.Screen.WorkingArea.Height - Me.Height)
    
        End Sub
    
        Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    
            btnLogin.Focus()
    
        End Sub

    Quello che mi viene da pensare e che non capisco è perchè ci sono differenze tra quello che vedo durante la progettazione del form (vedo dei contorni e dei colori diversi) e quello che poi vedo quando va in esecuzione

    P.S.: il form ha la proprietà FormBorderStyle = FixedSingle

  • Re: [Risolto] allineamento di istanze di programma

    Risolto, se a qualcuno dovesse servire ecco qui il codice:

    Dim nProg = Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Count
    Dim bordo = CInt((Me.Width - Me.ClientSize.Width) / 2)
    Dim larghezza = Me.ClientSize.Width + SystemInformation.BorderSize.Width * 2
    Me.Location = New Point((nProg - 1) * larghezza - bordo + SystemInformation.BorderSize.Width,
        My.Computer.Screen.WorkingArea.Height - Me.Height + bordo - SystemInformation.BorderSize.Height)

    Se dovete quindi posizionare il form proprio a Left = 0 ecco il codice

    Dim bordo = CInt((Me.Width - Me.ClientSize.Width) / 2)
    Me.Left = SystemInformation.BorderSize.Width - bordo
  • Re: [Risolto] allineamento di istanze di programma

    Grazie Sirjo

Devi accedere o registrarti per scrivere nel forum
4 risposte