2017-04-22 19 views
0

私がしたいのは、フォームを100個の不透明度で表示した後、X時間後に0.0の不透明度までフェードし始めました。私はアルゴリズムを持っていますが、 Form_Loadではフォームが既に最終不透明度と共にInitializeComponent()の後に表示されます。C#徐々にフェードフォーム

this.Opacity = 1.0; 

for (float i = 1.0f; i >= 0.0f; i -= 0.1f) 
{ 
    this.Opacity = i; 
    Thread.Sleep(150); 
} 
+0

代わりにWPFを使用することを検討してください。 WinFormsは実際にその種のもののために作られていませんでした... – BradleyDotNET

+1

私は眠りを避けるでしょう。 –

+0

眠っているだけで、私はフォームを作る前にショーをしようとしています –

答えて

1

あなたはそれがフォームがフォーカスを取得するたびに起こるしたい場合は、Activated Eventを使用して、フォームをロードした後に一度だけ起こるShown Eventを、使用、または。 Form1.csで

:Form1.Designer.csで

private void Form1_Shown(object sender, EventArgs e) 
{ 
    this.Opacity = 1.0; 

    for (float i = 1.0f; i >= 0.0f; i -= 0.1f) 
    { 
     this.Opacity = i; 
     Thread.Sleep(150); 
    } 
} 

this.Shown += new System.EventHandler(this.Form1_Shown); 

フォームを不可視にしたいが、コントロールが表示されたままならば、あなたはTransparencyKeyプロパティを使用することができます:

private void Form1_Shown(object sender, EventArgs e) 
{ 
    // Choose some obscure background that no other controls will have 
    this.BackColor = Color.Red; 
    this.TransparencyKey = this.BackColor; 
} 
+0

何か奇妙な理由でテキストをフェードアウトさせると、イメージを見ることができ、テキストも全く表示されないような透明な背景になります –

+0

これは不透明度の機能です...何をしたいのですか? –

+0

私は、フォームを透明にしてコントロールを作成しない例を更新しました。しかし、徐々にそうするかどうかは分かりませんが... –

関連する問題