您的位置:首页 > 编程语言 > C#

c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)

2009-10-20 15:09 549 查看
c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)

1.多线程操作窗体控件TE>TE>TE>TE>

delegate void SetTextCallback(string text);

private void SetText(string text)

{

// InvokeRequired required compares the thread ID of the

// calling thread to the thread ID of the creating thread.

// If these threads are different, it returns true.

if (this.textBox1.InvokeRequired)

{

SetTextCallback d = new SetTextCallback(SetText);

this.Invoke(d, new object[] { text });

}

else

{

this.textBox1.Text = text;

}

}

SetText(time.ToString());
2.

C#实现窗体淡入淡出效果的几种方法(转)

1.

private void Form1_Load(object sender, System.EventArgs e)

for(double d=0.01; d< 1; d+=0.02)

{

System.Threading.Thread.Sleep(1);

Application.DoEvents();

this.Opacity=d;

this.Refresh();

}

如果上面的 d到最后还没到1,这样可以实现不同程度的透明度,很有意思的。例如d到循环最后为0.9,那就是90%透明度。

2.

private void timer1_Tick(object sender, System.EventArgs e)

{

this.Opacity = WinShow ;

WinShow += 0.1 ;

if(WinShow >=1 )

{

timer1.Dispose ();

}

}

3.

用循环或计时器,

frmForm myForm=new frmForm()

frmForm.Opacity=0;

frmForm.show();

for(int i=0;i<100;i++)

{

Application.DoEvents()

frmForm.Opacity=i/100;

}

4.

#region ******** 窗体淡入效果函数 ********

private double WinShow = 0;//用于窗口淡入效果的变量

private void FormShow(System.Windows.Forms.Form Curfrm)

{

Curfrm.Opacity = WinShow ;

WinShow += 0.01;

if(WinShow == 1)

{

Curfrm.timerShow.Stop ();

}

}

#endregion

#region ******** 窗体淡入效果函数调用示例 ********

//实现窗口的淡入效果

private void timerShow_Tick(object sender, System.EventArgs e)

{

//timerShow,这是一个timer控件名称;把timerShow.interval=100就可以了。

FormShow(this);

}

#endregion

5.

using System.Runtime.InteropServices;

public class Win32

{

public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口

public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口

public const Int32 AW_VER_POSITIVE = 0x00000004; // 从上到下打开窗口

public const Int32 AW_VER_NEGATIVE = 0x00000008; // 从下到上打开窗口

public const Int32 AW_CENTER = 0x00000010;

public const Int32 AW_HIDE = 0x00010000; // 在窗体卸载时若想使用本函数就得加上此常量

public const Int32 AW_ACTIVATE = 0x00020000; //在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量

public const Int32 AW_SLIDE = 0x00040000;

public const Int32 AW_BLEND = 0x00080000; // 淡入淡出效果

[DllImport("user32.dll", CharSet = CharSet.Auto)]

public static extern bool AnimateWindow(

IntPtr hwnd, // handle to window

int dwTime, // duration of animation

int dwFlags // animation type

);

}

/*淡入窗体*/

private void Form_Load(object sender, EventArgs e)

{

Win32.AnimateWindow(this.Handle, 2000, Win32.AW_BLEND);

}

/*淡出窗体*/

private void Form_FormClosing(object sender, FormClosingEventArgs e)

{

Win32.AnimateWindow(this.Handle, 2000, Win32.AW_SLIDE | Win32.AW_HIDE | Win32.AW_BLEND);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: