水晶報表可以由很多的方法得到,其中一個就是使用vs.net來創建,它提供了非常豐富模型以使我們能夠在運行時操作屬性和方法。如果你正在使用vs.net開發.net程序,那么你就不需要再安裝其它軟件了,因為他已經內嵌在vs.net中了。執行模式 水晶報表取數據可以使用下面的方法實現: pull 模式: 被請求時,水晶報表直接根據指定的驅動連接數據庫然后組裝這些數據。 push 模式 : 此時開發表不得不自己編寫代碼連接數據并組裝dataset,同時將它傳送至報表。在些這種情況下,通過使用連接共享以及限制記錄集合的大小,可以使用報表性能最大化。 報表類型: 水晶報表設計器能夠直接包含報表至工程也能夠使用獨立的報表對象。 strongly-typed 報表 : 當你將報表文件加入到項目中去時,它就變成了一個了“ strongly-typed“報表。在這些情況下,你將擁有直接創建報表的對象的權力,這將減少一些代碼并且能夠提供一些性能。 un-typed 報表 : 這里的報表并不直接包含在項目中,因此稱為‘un-typed’ 報表。在這種情況下,你不得不使用水晶報表的”reportdocuemt“對象建立一個實例,并且”手動“地凋用報表。 其它注意事項 盡管水晶報表查看器擁有一些很酷的功能,如縮放、頁面導航等。但是他不提供打印功能,你不得不調用游覽器的打印功能。 vs.net中的水晶報表如果沒有注冊,那么它只能使用30次,30次后,”保存“功能就不能再使用了。為了避免這個,你不是不在 這里注冊此產品。 (好像不是這樣子的,不注冊也好像能用很長的時間,只是不能提供支持) 默認安裝的水晶報表只能支持5個用戶,為了支持更多的用戶,你不得不在 中購買許可證。 讓我們感受一下---在asp.net中使用一個現成的水晶報表文件 讓我們先感受一下在webform中使用水晶報表的感覺。 1) 從webform工具欄中拖動水晶報表查看器控件(crystal report viewer)至.aspx頁面中。2) 調出水晶報表查看器控件的屬性窗口 3) 點擊[...]按鈕查看"data binding"屬性,并彈出了databinding窗口。4) 從左邊的"bindable屬性”區中選擇“report source”5) 選中"自定義綁定表達式"單選按鈕,在右邊的底部的窗口中指定.rpt文件的文件名和路徑,例如:"c:\\program files\\microsoft visual studio.net\\crystal reports\\samples\\reports\\general business\\world sales report.rpt",然后”確定“ 注意:文件”world sales report.rpt“文件是在vs.net安裝時創建的。如果你在安裝過程中指定了其它目錄,此時你最好確認一下路徑的正確性。 上面的步驟中實際上是插入了下面這些代碼至asp.net文件中: <%@ register tagprefix="cr" namespace="crystaldecisions.web" assembly="crystaldecisions.web" %> 以及: <cr:crystalreportviewer> id="crystalreportviewer1" runat="server" width="350px" height="50px" reportsource=' <%# "c:\\program files\\microsoft visual studio.net\\crystal reports\\samples\\reports\\general business\\world sales report.rpt" %>'> </cr:crystalreportviewer> 注意:在飛刀我的vs.net正式版中自動生成的代碼中reportsource產生的樣式不是這樣子的,它是: reportsource=" <%# c:\xxx\xxx.rpt %>" 這樣是錯誤的,會出現錯誤信息,有兩處錯誤: databind中要有雙引號,因此外部只能用單引號 目錄分隔符號不能使用"\",必須使用"\\" 必須按照使用本文介紹的格式來手動修改,這也算是vs.net的一個bug吧。 6) 在page_load方法中調用databind方法。(代碼為vb.net) private sub page_load(byval sender as system.object, byval e as system.eventargs) databind() end sub 7)保存并編譯你的頁面。 現在,你就有一個內嵌水晶報表的webform頁面了。
10年的濱海新區網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都全網營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整濱海新區建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。成都創新互聯公司從事“濱海新區網站設計”,“濱海新區網站推廣”以來,每個客戶項目都認真落實執行。
窗口邊框(FormBorderStyle)設為None,窗口(WindowState)設為Maximized,如果想讓窗口背景透明,將窗口背景顏色和TransparencyKey設為同一種顏色,按鈕用Label(標簽)代替,背景設為Transparent,邊框設為None,文字位置一般是下中,Label控件支持無邊框。
動感效果在鼠標事件(MouseDown按下,MouseUp抬起,MouseEnter進入,MouseLeave離開)更換指定的圖片;
添加timer控件還可以使用動畫
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Label1.Refresh()
End Sub
快捷鍵用熱鍵
RegisterHotKey
函數功能:該函數定義一個系統范圍的熱鍵。
函數原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
參數:
hWnd:接收熱鍵產生WM_HOTKEY消息的窗口句柄。若該參數NULL,傳遞給調用線程的WM_HOTKEY消息必須在消息循環中中進行處理。
id:定義熱鍵的標識符。調用線程中的其他熱鍵不能使用同樣的標識符。應用功能程序必須定義一個0X0000-0xBFFF范圍的值。一個共享的動態鏈接庫(DLL)必須定義一個0xC000-0xFFFF范圍的值伯GlobalAddAtom函數返回該范圍)。為了避免與其他動態鏈接庫定義的熱鍵沖突,一個DLL必須使用GlobalAddAtom函數獲得熱鍵的標識符。
fsModifoers:定義為了產生WM_HOTKEY消息而必須與由nVirtKey參數定義的鍵一起按下的鍵。該參數可以是如下值的組合:
MOD_ALT:按下的可以是任一Alt鍵。MOD_CONTROL:按下的可以是任一Ctrl鍵。
MOD_SHIFT:按下的可以是任一Shift鍵。
MOD_WIN:按下的可以是任一Windows按鍵。
vk:定義熱鍵的虛擬鍵碼。
返回值:若函數調用成功,返回一個非O值。若函數調用失敗,則返回值為0。若要獲得更多的錯誤信息,可以調用GetLastError函數。
備注:當某鍵被接下時,系統在所有的熱鍵中尋找匹配者。一旦找到一個匹配的熱鍵,系統將把WM_HOTKEY消息傳遞給登記了該熱鍵的線程的消息隊列。該消息被傳送到隊列頭部,因此它將在下一輪消息循環中被移去。該函數不能將熱鍵同其他線程創建的窗口關聯起來。
若為一熱鍵定義的擊鍵己被其他熱鍵所定義,則RegisterHotKey函數調用失敗。
若hWnd參數標識的窗口已用與id參數定義的相同的標識符登記了一個熱鍵,則參數fsModifiers和vk的新值將替代這些參數先前定義的值。
若設置MOD_KEYUP位,則當發生鍵被按下或被彈起的事件時,窗口將發送WM_HOTKEY消息。
RegisterHotKey可以被用來在線程之間登記熱鍵。
UnregisterHotKey
函數功能:該函數釋放調用線程先前登記的熱鍵。
函數原型:BOOL UnregisterHotKey(HWND hWnd,int id);
參數:
hWnd:與被釋放的熱鍵相關的窗口句柄。若熱鍵不與窗口相關,則該參數為NULL。
id:定義被釋放的熱鍵的標識符。
返回值:若函數調用成功,返回值不為0。若函數調用失敗,返回值為0。若要獲得更多的錯誤信息,可以調用GetLastError函數。
1、首先定義所需要用到的常量
如圖所示,在窗體代碼后定義常量和API函數
代碼如下:
Public Const WM_HOTKEY As Integer = H312
Public Const MOD_ALT As Integer = H1
Public Const MOD_CONTROL As Integer = H2
Public Const MOD_SHIFT As Integer = H4
Public Const GWL_WNDPROC As Integer = (-4)
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
下面過程是注冊Ctrl+T的組合鍵為組合鍵,假如注冊成功,則返回true,反之注冊失敗則返回false,我們可以根據返回的結果判斷并提醒用戶注冊的情況。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim isResult As Boolean
isResult=RegisterHotKey(Handle, 0, MOD_CONTROL, Asc("T")) ’注冊Ctrl+T的組合鍵
If isResult = False Then
MsgBox("注冊熱鍵Ctrl+T失敗")
End If
End Sub
[apge]
下面過程為重載WndProc過程,響應熱鍵并處理熱鍵,這里是用來隱藏和顯示程序主界面。
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")'運行當空接龍游戲
End If
MyBase.WndProc(m)
End Sub
最后在關閉窗體的時候釋放占用的熱鍵,如果前面注冊失敗的話,則會出現釋放失敗的結果。
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Dim isResult As Boolean
isResult=UnRegisterHotKey(Handle, 0)
End Sub
雙擊打開指定的程序
Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")
End Sub
System.Diagnostics.Process.Start("路徑")打開指定程序
先列出這些吧
用背景圖片替換試試,圖片用PS設置成透明
不行的話 用其他控件 自有文本的
反正按鈕一般就是點擊事件
那你就添加點擊事件就好了
基本思路是在按鈕的 MouseMove 事件中檢測鼠標左鍵的狀態,如果是按下就跟著移動按鈕的位置。