我在用VS2010 C#写winform程序时,我不想panel滚动条默认中健滚动,该怎么设置?
我在用VS2010C#写winform程序时,使用panel来放picturebox,当picturebox比panel大时,出现滚动条,在panel得到焦点时,滚动鼠标...
我在用VS2010 C#写winform程序时,使用panel来放picturebox,当picturebox比panel大时,出现滚动条,在panel得到焦点时,滚动鼠标滚轮,panel的竖直滚动条就会滚动,我不想竖直滚动条滚动应该怎么设置?
滚动属性禁了滚动条也没了
我只是想滚动条用滚轮时不滚动,滚动条还想保留,有办法吗?因为我滚轮滚动要作它用 展开
滚动属性禁了滚动条也没了
我只是想滚动条用滚轮时不滚动,滚动条还想保留,有办法吗?因为我滚轮滚动要作它用 展开
3个回答
展开全部
新建一个usercontrol,usercontrol里放置你的panel和picturebox,实现IMessageFilter接口,这样应该就禁用了usercontrol的滚轮了,并且form里其他组件不受影响,代码如下:
public partial class UserControl1 : UserControl, IMessageFilter
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl1_Load(object sender, EventArgs e)
{
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 522)
{ return true; }
return false;
}
}
public partial class UserControl1 : UserControl, IMessageFilter
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl1_Load(object sender, EventArgs e)
{
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 522)
{ return true; }
return false;
}
}
追问
试了下,的确是过滤掉滚轮事件了,学习了
不过在这个程序里我不是想完全屏蔽滚轮事件,只是想作它用,比如放大缩小图像,左右滚动图像等,panel这个控件好像一接收到滚轮事件就自动滚竖直滚动条了,我是想取消这个
追答
if (m.Msg == 522)
{
//试一下在这里写放大,缩小图像的代码
return true;
}
展开全部
那使用GDI双缓冲绘图
当滚动条滚动的时候执行一次重画
当滚动条滚动的时候执行一次重画
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将panel的滚动属性禁掉就好了啊?我个人是用VSC++的,经常跟C#的语法混淆,具体的哪个属性我忘了,不过我知道是有这个属性的,可以直接设置的,你参照下SDK看看。
这个就没有直接属性了,你或者加段函数,将按下或使用滚轮时的按键返回为0。
这个就没有直接属性了,你或者加段函数,将按下或使用滚轮时的按键返回为0。
追问
我在mouse_wheel事件里加入了
***.VerticalScroll.Value=0,想不让它动,可还是动,晃了一下再回到顶部,应该是在mouse_wheel事件之前VerticalScroll.Value就改变了
追答
分段运行调试下,看看该事件的响应顺序,一步步来,能找到问题的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询