程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅:WinForm.NET中開發具有固定背景圖片的可滾動控件(5)

C#發現之旅:WinForm.NET中開發具有固定背景圖片的可滾動控件(5)

編輯:關於C語言

當用戶用鼠標拖拽操作直接拖動滾動條時,控件 觸發的滾動事件過程如下:

1.當用戶在滾動條上按下鼠標左鍵,開始 拖拽在時,控件觸發ThumbTrack類型的滾動事件。

2.當用戶移動鼠標 時,每一移動都會讓控件觸發ThumbTrack類型的滾動事件。當Windows系統設置了“拖 動時顯示窗口內容”時,還會觸發控件重繪事件,當沒有設置“拖動時顯示窗口 內容”時不會觸發控件重繪事件。

3.當用戶松開鼠標按鍵,結束 拖拽操作時觸發ThumbPosition事件。

此外當程序自己使用代碼設置控件的 AutoScrollPosition屬性來自行滾動時不會觸發任何控件滾動事件,鼠標滾輪操作也不會觸 發滾動事件。

以上是在筆者的WindowsXP SP2的系統中的實驗效果,相信對其他 Windows操作系統也一樣吧。

根據上述實驗結果,筆者重點處理ThumbTrack和 ThumbPosition類型的滾動事件,由於存在“拖動時顯示窗口內容”的設置,筆者 會重載處理控件的Windows消息處理方法,當Windows沒有設置“拖動時顯示窗口內容 ”時,對每一個ThumbTrack事件消息都額外的處理一個ThumbPosition消息,這樣就將 兩種情況統一起來。

解決問題

根據所上述分析,筆者開始創建一種固定背景 的可滾動的控件了,原理上面講的比較清楚,因此編寫代碼時不再多說了。筆者首先使用 VS.Net2005建立一個名為“FixedBackground”的WinForm的C#工程。然後創建一 個名為FixedBackgroundControl的類型,該類型是從System.Windows.Forms.UserControl類 型派生的。

筆者建立一個FixedBackground的屬性用於指定是否啟動固定背景的功能 ,其代碼如下

private bool bolFixedBackground = false;
///  <summary>
/// 固定背景
/// </summary>
[System.ComponentModel.Category("Appearance")]
[System.ComponentModel.DefaultValue(false)]
public bool FixedBackground
{
    get
    {
        return  bolFixedBackground;
    }
    set
    {
         bolFixedBackground = value;
    }
}

然後定義 一個名為LogonImage的屬性用於設置在控件客戶區右下角顯示的圖標,其代碼如下

private System.Drawing.Image myLogonImage = null;
///  <summary>
/// 標志圖片
/// </summary>
[System.ComponentModel.Category("Appearance")]
public System.Drawing.Image  LogonImage
{
    get
    {
        return  myLogonImage;
    }
    set
    {
         myLogonImage = value;
    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved