问题描述
我想做一个简单的浏览器,使用其与自己做的网站设计页面完全吻合,因为我的网页里已经设计了标题栏了,所以在窗体设计的时候要把窗体的标题栏去掉,然后通过移动我网页里的标题栏来移动窗体,可是WebBrowser控件好像没有mousemove这样的事件啊,要怎么办?哪位高人指点一下啊,小弟所有分数奉上了.
解决方案
解决方案二:
看看有没有WndProc,有的话,重写它试试
解决方案三:
在webbrowser里头有个PreviewKeyDown事件,用它可以定义按键行为。如果定义鼠标事件有困难,你不如用方向键,或者shift+方向键,或者F1,F2,F3,F4。我用下面的方法实现了用方向键移动窗体,每次5个像素。PrivateSubWebBrowser1_PreviewKeyDown(ByValsenderAsObject,ByValeAs_System.Windows.Forms.PreviewKeyDownEventArgs)_HandlesWebBrowser1.PreviewKeyDownDimMaxRightasinteger=My.Computer.Screen.WorkingArea.Width'电脑显示器的宽度DimMaxLowasinteger=My.Computer.Screen.WorkingArea.Height'电脑显示器的高度Ife.KeyCode=Keys.LeftThen'keys.left表示左方向键Me.Left-=5IfMe.Left<0ThenMe.Left=0EndIfIfe.KeyCode=Keys.RightThen'如果不喜欢方向键可以用keys.F2Me.Left+=5IfMe.Left>MaxRightThenMe.Left=MaxRight'不要超出显示器宽度。EndIfIfe.KeyCode=Keys.UpThenMe.Top-=5IfMe.Top<0ThenMe.Top=0EndIfIfe.KeyCode=Keys.DownThenMe.Top+=5IfMe.Top>MaxLowThenMe.Top=MaxLow'不要超出显示器高度。EndIfEndSub
解决方案四:
如果你可以给form1留一点点空隙的话,可以写form1_mousedown,mousemove,mouseup事件来完成。参见http://www.hongen.com/pc/program/codtutor/code0012/code01.htm只能拖动form1的一点点缝隙,还是无法实现拖动标题栏。如果你一定要拖动标题栏,那估计只能用API函数了。vs2005的API我不晓得用,vb60的API我都是到处抄来的。http://www.vbgood.com/viewthread.php?tid=12115或许对你有帮助。有一个叫做鼠标钩子的,应该能用。
解决方案五:
我有办法了,不需要api也可以实现!在webbrowser的左上角或者任何你喜欢的位置加一个button(或者别的可以响应mouse事件的咚咚)代码如下:PublicClassForm1DimMoveScreenAsBoolean'鼠标位置DimMousXAsIntegerDimMousYAsInteger'窗体位置DimCurrXAsIntegerDimCurrYAsIntegerPrivateSubForm1_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.LoadButton1.Visible=FalseEndSubPrivateSubButton1_KeyDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.KeyEventArgs)HandlesButton1.KeyDownIfe.KeyCode=Keys.F1ThenButton1.Visible=TrueEndIfIfe.KeyCode=Keys.F2ThenButton1.Visible=FalseEndIfEndSubPrivateSubButton1_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesButton1.MouseDownIfe.Button=Windows.Forms.MouseButtons.LeftThenMoveScreen=TrueMousX=e.XMousY=e.YEndIfEndSubPrivateSubButton1_MouseMove(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesButton1.MouseMoveIfMoveScreenThenCurrX=Me.Left-MousX+e.XCurrY=Me.Top-MousY+e.Y'移动窗体到新的位置Me.Left=CurrXMe.Top=CurrYEndIfEndSubPrivateSubButton1_MouseUp(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesButton1.MouseUpMoveScreen=FalseEndSubPrivateSubWebBrowser1_PreviewKeyDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.PreviewKeyDownEventArgs)_HandlesWebBrowser1.PreviewKeyDown,_Me.PreviewKeyDown_Button1.KeyDown'这里用了一堆handles.Ife.KeyCode=Keys.F1ThenButton1.Visible=TrueEndIfIfe.KeyCode=Keys.F2ThenButton1.Visible=FalseEndIfEndSubEndClass当你需要移动窗体的时候,按下F1,就会出现button1控件,你就可以拖动了,按下F2,button1控件就隐藏起来了。不影响webbrowser的外观。我3个控件都响应同一个KeyDown的事件,应该够用了,如果还有别的控件就再把它添加进来就可以了。注意,button1控件要在添加webbrowser控件以后再添加。----程序经过调试完全可用。这个办法已经是我能想到的最好的办法了。