By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,315 Members | 1,736 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,315 IT Pros & Developers. It's quick & easy.

VB 2005 Splash Screen Opacity Problems

P: 1
I have migrated a vb.net program to vb 2005. I am going nuts trying to fix this.

There is a splash screen that fades in and then in the background some sub procedures are taking place.

Here is the original code; This code gives me cross threading errors dealing with the opacity.

Expand|Select|Wrap|Line Numbers
  1. Private myDebuglog As DebugLog = ApplicationDebugLog
  2.     Private FormAlpha As Double = 0
  3.     Private WithEvents AlphaTimer As New System.Timers.Timer
  4.     Private WindowsSecurityPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
  5.     Private ntUserName As String
  6.     Private strt As System.Threading.Thread
  7.  
  8.  
  9.     Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  10.         ' Fill in the user box
  11.         ntUserName = WindowsSecurityPrincipal.Identity.Name.ToString
  12.         ntUserName = ntUserName.Replace("ILIOSPARTNERS\", "")
  13.         Me.txtLogin.Text = ntUserName
  14.         FormAlpha = 0.0
  15.         Me.Opacity = FormAlpha
  16.         AlphaTimer.Enabled = False
  17.         AlphaTimer.Interval = 10
  18.  
  19.         AlphaTimer.Enabled = True
  20.         'strt = New System.Threading.Thread(AddressOf AlphaTimer_Tick(AlphaTimer,)
  21.     End Sub
  22.  
  23.  
  24.  
  25.     Public Sub AlphaTimer_Tick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles AlphaTimer.Elapsed
  26.  
  27.         If FormAlpha >= 1 Then
  28.             AlphaTimer.Enabled = False
  29.             Me.Opacity = 1.0
  30.         Else
  31.             Me.Opacity = FormAlpha
  32.             FormAlpha += 0.05
  33.             Me.Refresh()
  34.         End If
  35.     End Sub
  36.  
  37.     Public Sub UpdateStatus(ByVal status As String)
  38.         lblLoadingStatus.Text = status
  39.         Me.Refresh()
  40.     End Sub
  41.  
  42.  
  43.     Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
  44.         Me.Dispose()
  45.         Application.Exit()
  46.     End Sub
---------------------------------------------------------------------------------------------------------------
So I modified the code to like this thinking this would solve the problem but now I get disposed errors.

here is the revised code;

Expand|Select|Wrap|Line Numbers
  1. Private myDebuglog As DebugLog = ApplicationDebugLog
  2.     Private FormAlpha As Double = 0
  3.     Private WithEvents AlphaTimer As New System.Timers.Timer
  4.     Private WindowsSecurityPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
  5.     Private ntUserName As String
  6.     Private strt As System.Threading.Thread
  7.  
  8. Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  9.         strt = New System.Threading.Thread(AddressOf updateValues)
  10.         strt.Start()
  11.         ' Fill in the user box
  12.         ntUserName = WindowsSecurityPrincipal.Identity.Name.ToString
  13.         ntUserName = ntUserName.Replace("ILIOSPARTNERS\", "")
  14.         Me.txtLogin.Text = ntUserName
  15.         FormAlpha = 0.0
  16.         Me.Opacity = FormAlpha
  17.         AlphaTimer.Enabled = False
  18.         AlphaTimer.Interval = 10
  19.  
  20.         AlphaTimer.Enabled = True
  21.         'strt = New System.Threading.Thread(AddressOf AlphaTimer_Tick(AlphaTimer,)
  22.     End Sub
  23.  
  24.  
  25.  
  26.     Public Sub AlphaTimer_Tick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles AlphaTimer.Elapsed
  27.         updateValues()
  28.  
  29.     End Sub
  30.  
  31.     Public Sub updateValues()
  32.         If FormAlpha >= 1 Then
  33.             AlphaTimer.Enabled = False
  34.             changeOpacity()
  35.             'Me.Opacity = 1.0
  36.         Else
  37.             changeOpacity()
  38.             'Me.Opacity = FormAlpha
  39.             FormAlpha += 0.05
  40.             Me.Refresh()
  41.         End If
  42.     End Sub
  43.  
  44.     Public Sub UpdateStatus(ByVal status As String)
  45.         lblLoadingStatus.Text = status
  46.         Me.Refresh()
  47.     End Sub
  48.  
  49.  
  50.     Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
  51.         Me.Dispose()
  52.         Application.Exit()
  53.     End Sub
  54.  
  55.     Public Sub changeOpacity()
  56.         If Me.InvokeRequired Then
  57.             Me.Invoke(New MethodInvoker(AddressOf ChangeOpacity))
  58.         Else
  59.             Me.opacity = FormAlpha
  60.         End If
  61.     End Sub
Mar 1 '07 #1
Share this Question
Share on Google+
1 Reply


kenobewan
Expert 2.5K+
P: 4,871
Please state the error in full and whether it gives you a line number. Also more info about the platform you are working in might help, OS, .net version etc. Thanks.
Mar 2 '07 #2

Post your reply

Sign in to post your reply or Sign up for a free account.