C#實現QQ提示窗

來源:互聯網
上載者:User

在做WinForm開發時,我們經常用到的提示恐怕就是MessageBox。但是有時提示過於頻繁導致使用者無法工作,比如,如果系統一直在迴圈嘗試串連到伺服器,如果串連不上則會迴圈提示使用者無法串連伺服器。這種情況下,恐怕用MessageBox就有點暴力啦。

替代方法,可以換成把提示顯示在表單介面上,但是不夠醒目,那怎樣好呢,QQ提示窗,有動畫的效果又不會頻繁的提示,好的問題解決。那麼看看怎麼實現吧

實現QQ提示框,核心是用到系統庫user32.dll

 

代碼1:

  [DllImport("user32.dll")]
public static extern bool AnimateWindow(IntPtr hwnd, int dateTime, int dwFlags);//以動畫效果繪製表單

在添加了對庫函數的引用之後,下一步就是建立一個表單了,用來顯示系統的提示訊息。在表單上放一個Label用來顯示訊息內容。

代碼2:

 

public partial class Message : Office2007Form
{
#region 表單顯示參數
private int currentX;//橫座標

private int currentY;//縱座標

private int screenHeight;//螢幕高度

private int screenWidth;//螢幕寬度

int AW_ACTIVE = 0x20000; //啟用視窗,在使用了AW_HIDE標誌後不要使用這個標誌

int AW_HIDE = 0x10000;//隱藏視窗

int AW_BLEND = 0x80000;// 使用淡入淡出效果

int AW_SLIDE = 0x40000;//使用滑動類型動畫效果,預設為滾動動畫類型,當使用AW_CENTER標誌時,這個標誌就被忽略

int AW_CENTER = 0x0010;//若使用了AW_HIDE標誌,則使視窗向內重疊;否則向外擴充

int AW_HOR_POSITIVE = 0x0001;//自左向右顯示視窗,該標誌可以在滾動動畫和滑動動畫中使用。使用AW_CENTER標誌時忽略該標誌

int AW_HOR_NEGATIVE = 0x0002;//自右向左顯示視窗,該標誌可以在滾動動畫和滑動動畫中使用。使用AW_CENTER標誌時忽略該標誌

int AW_VER_POSITIVE = 0x0004;//自頂向下顯示視窗,該標誌可以在滾動動畫和滑動動畫中使用。使用AW_CENTER標誌時忽略該標誌

int AW_VER_NEGATIVE = 0x0008;//自下向上顯示視窗,該標誌可以在滾動動畫和滑動動畫中使用。使用AW_CENTER標誌時忽略該標誌
#endregion
public Message()
{
InitializeComponent();
}
public Message(string message)
{
InitializeComponent();
label1.Text = message;
}
private void Message_Load(object sender, EventArgs e)
{

Rectangle rect = Screen.PrimaryScreen.WorkingArea;//擷取工作區

screenHeight = rect.Height;//擷取工作區的高度

screenWidth = rect.Width;//擷取工作區的寬度

currentX = screenWidth - this.Width; //擷取繪製表單的橫座標

currentY = screenHeight - this.Height;//擷取繪製表單的縱座標

this.Location = new System.Drawing.Point(currentX, currentY);

PDLL.AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_VER_NEGATIVE);
timer1.Enabled = true;
}
//這裡我加了Timer控制項,控制提示框的顯示時間,提示窗顯示一定時間就隱藏
private void timer1_Tick(object sender, EventArgs e)
{
this.label1.Text = "";
if (this.WindowState==FormWindowState.Normal)
{
this.Hide();
timer1.Enabled = false;
}


}

}

在主視窗中,當遇到需要提示訊息時則執行個體化提示窗,並顯示提示窗。但是我的是在多線程中使用,當我執行個體化訊息提示窗後,調用表單的show()方法,表單無法正常顯示,於是調用了ShowDialog(),表單正常顯示。

代碼3:

 

  m.ShowMessage = "無法正常串連到裝置";
m.ShowDialog();

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.