none
請問移動視窗位置 RRS feed

  • 問題

  • 想請問一下語法問題 

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            WebBrowser2.Navigate(http://tw.yahoo.com) '顯示網頁
               WebBrowser2.Document.Window.MoveTo(50, 450)'移動到指定座標==>這行顯示NULL

             End Sub

    不知道是那裡出了問題  webbrowser元件還要再設那些屬性嗎?

    搞不懂為什麼都是空值

    感謝

     

    2007年6月17日 下午 12:10

解答

  • Hi,

    不知道你是想做甚麼樣的功能,不過這部分有點困難,我自己測試了一下,是把WebBrowser的捲軸取消,自己加上一個垂直捲軸來用,不過還是會有些不準的情形,你參考看看

    Code Snippet

    Public Class Form1

     

        Dim vs As VScrollBar

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            vs = New VScrollBar

            WebBrowser1.ScrollBarsEnabled = False

            WebBrowser1.Navigate("http://tw.yahoo.com")

            Me.WindowState = FormWindowState.Maximized

            Me.Show()

            vs.Dock = DockStyle.Right

            vs.Visible = True

            Me.Controls.Add(vs)

            vs.BringToFront()

            ''WebBrowser不是很熟,我是用來等待載入完成,這部份可以自行修改

            Do While WebBrowser1.Document Is Nothing

                Application.DoEvents()

            Loop

            Do While WebBrowser1.Document.Window Is Nothing

                Application.DoEvents()

            Loop

            Me.vs.Maximum = Me.WebBrowser1.Document.Body.ScrollRectangle.Height + Me.WebBrowser1.Margin.Horizontal

            Me.vs.LargeChange = CType(Me.vs.Maximum / 10, Integer)

            Me.vs.SmallChange = CType(Me.vs.Maximum / 20, Integer)

     

            AddHandler vs.ValueChanged, AddressOf On_Scroll

        End Sub

     

        Private Sub On_Scroll(ByVal sender As Object, ByVal e As EventArgs)

            Me.Text = vs.Value

            WebBrowser1.Document.Window.ScrollTo(0, vs.Value)

        End Sub

     

    End Class

     

    對於要如何取得載入網頁的高度/寬度等資訊,我是參考下面這邊

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1202156&SiteID=1

    測起來感覺還是不太準,你可以自行再研究看看

    2007年6月18日 下午 04:15
    版主

所有回覆

  • Hi,

    如果是要變更Form的位置,你可以用下面的方式就可以了。

    Me.Location = New Point(X, Y)

    2007年6月17日 下午 01:27
    版主
  •  bauann 寫信:

    Hi,

    如果是要變更Form的位置,你可以用下面的方式就可以了。

    Me.Location = New Point(X, Y)

    大大我不是想要移動FORM的位置 

    我是想移動WEBBROWSER裡面的文件(網頁)

    所以在拜託大大了

    感謝

    2007年6月17日 下午 02:17
  •  WebBrowser2.Document.Window.scrollTO(50, 450)

    改成這樣後  發現會捲動到我想要的位置  但是卻馬上又跳回座標(0,0)去了

    很奇怪

     

    2007年6月17日 下午 02:34
  • Hi,

    抱歉,弄錯你的意思了~

    在這一行 WebBrowser1.Navigate("http://tw.yahoo.com") ,要等到網頁載入完成之後,WebBrowser1.Document.Window才不會是Null參照,所以你可能要去判斷網頁是否載入完成,之後再去執行MoveTo的部分。

    Moveto部分我有測試了一下,是不會有錯誤產生,但是看不出有甚麼效果哩.. 

    2007年6月17日 下午 02:40
    版主
  • Hi,

    我想會跳回 (0,0) 位置的原因應該也是一樣的,你要等到載入完成之後再去執行你的相關動作。

    2007年6月17日 下午 02:54
    版主
  • 感謝大大提示

    我去是看看了

    謝了

    2007年6月18日 上午 01:39
  •  bauann 寫信:

    Hi,

    我想會跳回 (0,0) 位置的原因應該也是一樣的,你要等到載入完成之後再去執行你的相關動作。

    大大可否再請教一下 

    我執行FORM後  能夠直接就放到最大嗎   而不用再去按FORM右上角的"放大功能"

    還有如何控制scrollbar的垂直捲軸  我只想要顯示垂直的捲軸

    感謝大大

    2007年6月18日 上午 05:55
  • 搞定最大化功能

    還剩下垂直捲軸的功能

    再繼續努力研究

     

    2007年6月18日 上午 08:55
  • 搞了好久  還是不能成功的把webbrowser 元件

    只單單顯示垂直的捲軸(水平的要隱藏)

    不知道大大可否提示一下

    感謝

    2007年6月18日 下午 01:36
  • Hi,

    不知道你是想做甚麼樣的功能,不過這部分有點困難,我自己測試了一下,是把WebBrowser的捲軸取消,自己加上一個垂直捲軸來用,不過還是會有些不準的情形,你參考看看

    Code Snippet

    Public Class Form1

     

        Dim vs As VScrollBar

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            vs = New VScrollBar

            WebBrowser1.ScrollBarsEnabled = False

            WebBrowser1.Navigate("http://tw.yahoo.com")

            Me.WindowState = FormWindowState.Maximized

            Me.Show()

            vs.Dock = DockStyle.Right

            vs.Visible = True

            Me.Controls.Add(vs)

            vs.BringToFront()

            ''WebBrowser不是很熟,我是用來等待載入完成,這部份可以自行修改

            Do While WebBrowser1.Document Is Nothing

                Application.DoEvents()

            Loop

            Do While WebBrowser1.Document.Window Is Nothing

                Application.DoEvents()

            Loop

            Me.vs.Maximum = Me.WebBrowser1.Document.Body.ScrollRectangle.Height + Me.WebBrowser1.Margin.Horizontal

            Me.vs.LargeChange = CType(Me.vs.Maximum / 10, Integer)

            Me.vs.SmallChange = CType(Me.vs.Maximum / 20, Integer)

     

            AddHandler vs.ValueChanged, AddressOf On_Scroll

        End Sub

     

        Private Sub On_Scroll(ByVal sender As Object, ByVal e As EventArgs)

            Me.Text = vs.Value

            WebBrowser1.Document.Window.ScrollTo(0, vs.Value)

        End Sub

     

    End Class

     

    對於要如何取得載入網頁的高度/寬度等資訊,我是參考下面這邊

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1202156&SiteID=1

    測起來感覺還是不太準,你可以自行再研究看看

    2007年6月18日 下午 04:15
    版主
  •  bauann 寫信:

    Hi,

    不知道你是想做甚麼樣的功能,不過這部分有點困難,我自己測試了一下,是把WebBrowser的捲軸取消,自己加上一個垂直捲軸來用,不過還是會有些不準的情形,你參考看看

    Code Snippet

    Public Class Form1

     

        Dim vs As VScrollBar

     

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            vs = New VScrollBar

            WebBrowser1.ScrollBarsEnabled = False

            WebBrowser1.Navigate("http://tw.yahoo.com")

            Me.WindowState = FormWindowState.Maximized

            Me.Show()

            vs.Dock = DockStyle.Right

            vs.Visible = True

            Me.Controls.Add(vs)

            vs.BringToFront()

            ''WebBrowser不是很熟,我是用來等待載入完成,這部份可以自行修改

            Do While WebBrowser1.Document Is Nothing

                Application.DoEvents()

            Loop

            Do While WebBrowser1.Document.Window Is Nothing

                Application.DoEvents()

            Loop

            Me.vs.Maximum = Me.WebBrowser1.Document.Body.ScrollRectangle.Height + Me.WebBrowser1.Margin.Horizontal

            Me.vs.LargeChange = CType(Me.vs.Maximum / 10, Integer)

            Me.vs.SmallChange = CType(Me.vs.Maximum / 20, Integer)

     

            AddHandler vs.ValueChanged, AddressOf On_Scroll

        End Sub

     

        Private Sub On_Scroll(ByVal sender As Object, ByVal e As EventArgs)

            Me.Text = vs.Value

            WebBrowser1.Document.Window.ScrollTo(0, vs.Value)

        End Sub

     

    End Class

     

    對於要如何取得載入網頁的高度/寬度等資訊,我是參考下面這邊

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1202156&SiteID=1

    測起來感覺還是不太準,你可以自行再研究看看

    感謝大大熱心  提供小弟方向 

    我這就去是看看

    因為我只想要顯示網頁中的某一塊版面

    所以才想說去控制webbrowser大小+scroll座標位置(不知道html網頁可不可以用VB2005去切割版面)

    這樣就可以達到只顯示我想要的網頁區塊版面

    而不是整個網頁都顯示出來

    小弟才用這種很笨的方法

    感謝大大

    2007年6月18日 下午 04:36
  • 喔 ~

    那你可以多了解一下Webbrower的功能,應該可以抓出網頁原始碼,之後切出你要的部份的網頁原始碼之後再丟給顯示部分才對

    2007年6月18日 下午 05:11
    版主
  • 大大是說抓出網頁原始碼  然後針對需要部份的區塊   把這區塊的原始碼給COPY下來

    然後再把原始碼存成一個新網頁  再用webbrowser元件去開啟這網頁摟

    示這樣子嗎?

    感謝

    2007年6月20日 上午 03:27