發表文章

目前顯示的是 6月, 2008的文章

WPF - RotateTransform

圖片
這篇來測試一下旋轉的效果,旋轉的效果是將RotateTransForm設定給控制項的RenderTransForm屬性,執行的結果像下面這樣 下面我們就來看看測試的程式碼吧 Imports System.Windows Imports System.IO Imports System.Reflection Class Window1 Dim cv As Canvas Dim myT As Threading.DispatcherTimer Dim btnOther As New Button Dim rotatePoint As Double = 0 Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded cv = New Canvas Me.Content = cv For z As Integer = 0 To 9 Dim btn As New Button btn.Name = "btn_" & z ''設定旋轉的原點 btn.RenderTransformOrigin = New Point(0, 0) ''設定旋轉的角度 btn.RenderTransform = New RotateTransform(z * 36) btn.Content = "Button" & z & " Rotate=" & Format(z * 36, "000") btn.Background = Brushes.LightPink Canvas.SetLeft(btn, 150) Canvas.SetTop(btn, 150

WPF - 簡單的圖檔瀏覽程式

圖片
這篇當作練習題,把之前的稍為回憶一下,來作個簡單的圖檔瀏覽程式,完成之後是像下面這樣 介面的部分就改用XAML Code來作了,下面我們來看看相關的程式碼吧 Imports System.Windows Imports System.IO Imports System.Reflection Class Window1 Dim smallImg() As Image Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded RefreshImage() End Sub Private Sub wpSmallImg_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles spSmallImg.MouseDown If e.OriginalSource.GetType.Name = "Image" Then LargerImg.Source = CType(e.OriginalSource, Image).Source End If End Sub Private Sub btnSelect_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnSelect.Click Dim dlgOpen As New Windows.Forms.FolderBrowserDialog If dlgOpen.ShowDialog = Forms.DialogResult.OK Then txtSource.Text = dlgOpen.SelectedPath RefreshImage() End If End S

WPF 教學短片

各位鄉親阿,由曹祖聖老師錄製的一系列有關WPF的教學短片已經放上MSDN了,千萬不要錯過啦,快點去瞧瞧吧 MSDN WPF 教學短片

WPF - Expander

圖片
Expander也算是一種容器,下面我們簡單的用程式碼來測試一下Expander的功能,執行結果畫面大概是像下面這樣 Imports System.Windows Imports System.IO Imports System.Reflection Class Window1 Dim sp As StackPanel Dim exp As Expander Dim chsp As StackPanel Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded sp = New StackPanel Me.Content = sp chsp = New StackPanel For z As Integer = 0 To 4 Dim rdo As New RadioButton rdo.Name = "rdo" & z rdo.Content = "RadioButton" & z chsp.Children.Add(rdo) Next exp = New Expander exp.Content = chsp exp.Background = Brushes.AliceBlue sp.Children.Add(exp) ''設定展開的方向 ''exp.ExpandDirection = ExpandDirection.Right exp.Header = "Header" End Sub End Class

Tools

本篇是給自己備忘的,有興趣的朋友也可以看看 AutoRuns for Windows v9.21 此公用程式 (具有任何啟動監視器之自動啟動位置的最完整知識) 顯示設定在系統開機或登入期間執行的程式,以及顯示舊版 Windows 中項目的處理方式。這些程式包含啟動資料夾、Run、RunOnce 和其他登錄機碼中的程式。您可以設定 Autoruns 顯示其他位置 (包含檔案總管殼層延伸、工具列、瀏覽器協助程式物件、Winlogon 通知、自動啟動服務等)。Autoruns 與 Windows Me 和 XP 提供的 MSConfig 公用程式不同。 Autoruns 的 [隱藏簽署的 Microsoft 項目 (Hide Signed Microsoft Entries)] 選項可協助您專注在已新增至系統的協力廠商自動啟動影像,且支援查看系統上其他帳戶設定的自動啟動影像。下載套件中還包含 Autorunsc,這是具備相同功能但可以用 CSV 格式輸出的命令列公用程式。 您會十分驚訝有這麼多可以自動啟動的執行檔! Autoruns 可在所有版本的 Windows 上執行,包含 Windows XP 64 位元版本 (適用 x64) 和 Windows Server 2003 64 位元版本 (適用 x64)。 AccessChk v4.1 為了確保所建立之環境的安全性,Windows 系統管理員必須經常瞭解特定使用者或群組對資源的存取權限,這些資源包括:檔案、目錄、登錄機碼、全域物件以及 Windows 服務。AccessChk 會使用易於瞭解的介面和輸出來快速回答這些問題。 Process Monitor v1.33 Process Monitor 是一種進階的 Windows 監視工具,可顯示即時檔案系統、登錄和處理程序/執行緒活動。Process Monitor 不但綜合了兩個舊版的 Sysinternals 公用程式功能 (Filemon 和 Regmon),還新增了一連串的增強型功能,這些功能包括豐富和無破壞性的篩選、詳盡的事件內容 (如工作階段 ID 和使用者名稱)、可靠的處理程序資訊、含每個作業整合符號支援的完整執行緒堆疊、同步記錄到檔案以及其他功能。這些強大的功能可讓 Process Monitor 成為系統疑難排解和惡意程式碼捕捉工具組的核心公用程式。

WPF學習日誌 ~ RadioButton ~

RadioButton與之前在Windows Form的時候使用上沒有太大的差異,下面這邊我們特別說明一個GroupName這個屬性;在以往,同一個群組的項目我們會把它放到容器中,用容器來作分割;而在WPF裡面則是用GroupName來作分割,下面我們來看看測試的程式碼 Imports System.Windows Imports System.IO Imports System.Reflection Class Window1 Dim spMain As StackPanel Dim wpChild_1 As WrapPanel Dim wpChild_2 As WrapPanel Dim rdoA(2) As RadioButton Dim rdoB(2) As RadioButton Dim tbMsg As TextBlock Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded spMain = New StackPanel Me.Content = spMain For z As Integer = 0 To 2 rdoA(z) = New RadioButton rdoA(z).Content = "RadioButton-A-" & z ''不指定GroupName的話預設是"" 'rdoA(z).GroupName = "A" rdoA(z).Margin = New Thickness(3) AddHandler rdoA(z).Checked, AddressOf RadioButton_Checked rdoB(z) = New RadioButton rdoB(z).Content = &qu

WPF學習日誌 ~ RepeatButton ~

RepeatButton也是Buton其中的一種,主要的差別是在於當你按住RepeatButton不放的時候,Click事件會被重複的觸發;下面是測試的程式碼,可以測試壓著Button不放的時候TextBox的變化 Imports System.Windows Imports System.IO Imports System.Reflection Class Window1 Dim wp As WrapPanel Dim txtInput As TextBox Dim btnAdd As Windows.Controls.Primitives.RepeatButton Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded wp = New WrapPanel Me.Content = wp txtInput = New TextBox txtInput.Width = 200 txtInput.Text = "0" wp.Children.Add(txtInput) btnAdd = New Windows.Controls.Primitives.RepeatButton btnAdd.Content = "Press Me" wp.Children.Add(btnAdd) AddHandler btnAdd.Click, AddressOf Button_OnClick End Sub Protected Sub Button_OnClick(ByVal sender As Object, ByVal e As RoutedEventArgs) txtInput.Text = CInt(txtInput.Text) + 1 End Sub End Class

WPF學習日誌 ~ 只能輸入數字的TextBox ~

在Windows Form常常有一些驗證輸入的需求,限制只能輸入某些字的TextBox在WPF中跟之前沒有太大的不同,下面簡單的列出處理部分的程式碼 AddHandler txt.PreviewKeyDown, AddressOf TextBox_PreviewKeyDown 這裡我們在PreviewKeyDowm的事件中處理,處理的程式碼像下面這樣 Protected Sub TextBox_PreviewKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) If (e.Key < Key.D0) OrElse (e.Key > Key.D9) Then e.Handled = True End If End Sub 要特別注意的是在PreviewKeyDown事件中不要直接抓TextBox.Text來作處理喔,因為這個事件中抓到的Text是"還沒有把輸入文字附加到Text屬性上"的

WPF學習日誌 ~ 事件傳遞 ~

這篇簡單的說明一下在WPF中事件傳遞的部分,下面是測試的程式碼 Class Window1 Dim sp As StackPanel Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded sp = New StackPanel Me.Content = sp Dim tb As New TextBlock tb.Text = "I am a TextBlock" sp.Children.Add(tb) Dim btn As New Button btn.Content = "Button" sp.Children.Add(btn) Dim txt As New TextBox txt.Text = "Test words" sp.Children.Add(txt) AddHandler Me.MouseDown, AddressOf El_OnMouseDown End Sub Protected Sub El_OnMouseDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs) If e.ChangedButton = MouseButton.Right Then Me.Title = "Source:" & e.Source.ToString & " OriginalSource:" & e.OriginalSource.ToString If CType(e.Source, FrameworkElement).Margin = New Thickness(5) Then CType(e.So

利用IP位置取得對方的Mac

要取得本機的MAC位置我們可以利用WMI或是.Net framework提供的相關功能來作,例如下面這兩篇 請問在 VB2005 中, 如何得知對方 MAC Address vb.net 2005如何獲取本機以下信息 那如果要得知遠端的MAC位址應該怎麼做,雖然可以利用arp的指令並將結果輸出到文字檔,但這樣有點麻煩,找了些參考資料後,我們可以用下面的程式碼來取得 首先是一些參考資料 RtlMoveMemory SendARP Function How to get mac address with input ip address 下面是測試的程式碼 Private Const No_ERROR = 0 _ Private Shared Function inet_addr(ByVal s As String) As Integer End Function _ Private Shared Function SendARP(ByVal DestIp As Integer, _ ByVal ScrIP As Integer, _ ByRef pMacAddr As Long, _ ByRef PhyAddrLen As Long) As Integer End Function _ Private Shared Sub CopyMemory(ByVal dst As Byte(), ByRef src As Long, ByVal bcount As Integer) End Sub Private Function GetRemoteMACAddress(ByVal sRemoteIP As String, ByRef sRemoteMacAddress As String) As Boolean Dim dwRemoteIp As Integer Dim pMacAddr As Long = 0 Dim bpMacA