Hello, I am trying to program a transparent form with opacity that goes up during 7 seconds from 0,1 (transparent) to 1 (nontransparent).
I am using Visual Studio 2010. Without wisual studio, using csc.exe it works. But visual studio debugging gives me allways the error, on the line: this.Opacity += 0.1; that there is an Invalid cross-thread operation: The Form1 control was accessed by a thread other than the thread for which it was created.
I really want to use visual studio. So please tell me how to do it right. the code for the windows form is below:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Timers; using System.Windows.Forms;
namespace Opacity { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.timer_Tick(); } private void timer_Tick() { this.aTimer = new System.Timers.Timer(); aTimer.Interval = 175; aTimer.AutoReset = true; aTimer.Enabled = true; aTimer.Elapsed += new ElapsedEventHandler(OnTimeEvent); } private void OnTimeEvent(Object source, System.Timers.ElapsedEventArgs e) { if (this.Opacity == 1.0) { return; } else { this.Opacity += 0.1; this.Text = "Opacity = " + this.Opacity.ToString(); } } private void InitializeComponent() { this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Name = "Form1"; this.Opacity = 0.1; this.Text = "Opacity"; this.TopMost = true; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } private System.Timers.Timer aTimer; } static class Program { /// <summary> /// Der Haupteinstiegspunkt für die Anwendung. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }