VB & .NET - Mario De Ghetto

Visual Basic & .NET: programmare che passione!

Archivio per Gennaio 18th, 2008

[VS] Debug delle classi del Framework .NET

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

A quanto pare è arrivato il momento di poter dare uno sguardo al Framework .NET!

Infatti, Microsoft ha reso possibile eseguire il debug delle classi contenute nel Framework .NET, naturalmente in sola lettura. Per vedere come è possibile applicare questa possibilità a Visual Studio 2008, vi consiglio questa pagina (in inglese): http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx.

Possono essere visionate le seguenti librerie:

  • .NET Base Class Libraries (inclusi System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc).
  • ASP.NET (System.Web, System.Web.Extensions)
  • Windows Forms (System.Windows.Forms)
  • Windows Presentation Foundation (System.Windows)
  • ADO.NET e XML (System.Data e System.Xml)

Attenzione: non è possibile usufruire di questa opportunità con la versione Express.

Pubblicato su Novità | Contrassegnato da tag: , , | Non ci sono Commenti »

#7 Nascondere/ripristinare il puntatore del mouse

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

Talvolta alcune applicazioni richiedono che non sia visibile il puntatore del mouse (Cursor).

Con VB.NET è possibile farlo in modo estremamente semplice.

Per farlo scomparire:

        System.Windows.Forms.Cursor.Hide()

e per farlo riapparire

        System.Windows.Forms.Cursor.Show()

Attenzione però che l’eventuale crash dell’applicazione potrebbe lasciare il cursore del mouse nello stato “invisibile” fino al riavvio del sistema!

Pubblicato su Tips | Contrassegnato da tag: | Non ci sono Commenti »

#6 Sabato o domenica?

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

A volte, specialmente in programmi gestionali, e’ utile sapere se una determinata data cade di sabato o domenica. Ecco una routine che svolge questo lavoro.

Public Function IsWeekend(ByVal data As Date, _
     ByRef giorno As String) As Boolean
  ' Parametri di input:
  ' - data: la data da testare
  ' - giorno: parametro passato per riferimento
  ' Il parametro 'giorno', passato per riferimento, viene
  ' modificato per restituire il nome del giorno della settimana,
  ' se sabato o domenica, oppure l'indicazione "feriale".
  '
  ' Parametri di output:
  ' - True: il giorno testato è un sabato o una domenica
  ' - False negli altri casi
    Select Case Weekday(data)
      Case FirstDayOfWeek.Saturday
          giorno = "Sabato"
          IsWeekend = True
      Case FirstDayOfWeek.Sunday
          giorno = "Domenica"
          IsWeekend = True
      Case Else
          giorno = "feriale"
          IsWeekend = False
  End Select
End Function

La funzione di cui sopra viene testata con il seguente codice (da inserire nell’evento Load della Form, oppure nell’evento Click di un pulsante):

Dim giorno As String
Dim i As Integer
For i = 0 To 1
  ' test su 2 giorni consecutivi (domenica e lunedi)
  If IsWeekend(DateAdd("d", i, #1/20/2008#), giorno) Then
      MsgBox("Non si lavora di " & giorno)
  Else
      MsgBox("Giorno " & giorno & ": OK, lavora lavora!!")
  End If
Next i

Pubblicato su Tips | Contrassegnato da tag: | Non ci sono Commenti »

#5 Verifica se anno bisestile

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

Spesso è necessario conoscere se un anno sia bisestile. Nel tempo si sono trovate molte soluzioni diverse a questo problema.

Con VB.NET il problema è stato risolto alla fonte: è fornito un opportuno metodo, IsLeapYear, che accetta in input un valore intero (l’anno) e restituisce un valore booleano (True = bisestile, False = non bisestile).

Per provare questa funzione, creare una form, aggiungere due TextBox di nome rispettivamente TextBox1 e TextBox2 ed un pulsante e infine, nell’evento Click del pulsante inserire il seguente codice:

If TextBox1.Text = "" Then
  TextBox2.Text = "anno non indicato"
Else
  If (DateTime.IsLeapYear(Integer.Parse(TextBox1.Text)) = True) _
        Then
     TextBox2.Text = "L'anno " & TextBox1.Text & " è bisestile."
  Else
     TextBox2.Text = "L'anno " & TextBox1.Text & " NON è bisestile."
  End If
End If

Pubblicato su Tips | Contrassegnato da tag: | Non ci sono Commenti »

#4 Ottenere l’indirizzo IP

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

Per ottenere l’indirizzo IP della macchina (collegata in rete) sulla quale gira il programma, ecco una soluzione valida per Visual Basic 2005:

Private Shared Sub NamedSub()
  Dim loip() As System.Net.IPAddress = _
    System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName)
  Dim ip As String = loip(0).ToString
  MessageBox.Show(ip)
End Sub

E’ possibile ottenere altre informazioni sulla connessione di rete leggendo questo articolo pubblicato su MSDN

Il metodo usato in Visual Basic 2003 è obsoleto e da evitare:

Dim ip As String = _
System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName)
.AddressList(0).ToString 

N.B.: l’istruzione deve essere scritta tutta su una singola riga

Pubblicato su Tips | Contrassegnato da tag: | Non ci sono Commenti »

#3 Verificare che un form sia aperto

Pubblicato da Mario De Ghetto su 18 Gennaio 2008

Per verificare che un form sia aperto si può utilizzare il codice sotto riportato.
Aspetti fondamentali di questa tecnica sono:
- l’importazione del namespace System.Windows.Forms
- il ciclo di test sul nome del form realizzato con For Each,
testando la collezione Application.OpenForms.

Imports System.Windows.Forms
Public Class Form1
   Private Sub Button1_Click(ByVal sender As System.Object, _
           ByVal e As System.EventArgs) Handles Button1.Click
      Dim nomeForm As String = "Form1"
      If VerificaFormAperto(nomeForm) = True Then
         MessageBox.Show(nomeForm & " è aperto!")
      Else
         MessageBox.Show(nomeForm & " NON è aperto")
      End If
   End Sub
 
   Public Function VerificaFormAperto(ByVal nomeForm As String) _
         As Boolean
      Dim f As Form
      For Each f In Application.OpenForms
         If f.Name = nomeForm Then
            Return True
         End If
      Next
      Return False
   End Function
End Class  

Pubblicato su Tips | Contrassegnato da tag: | 3 Commenti »