700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C# Label 有滚动条(或TextBox不能选中文字的解决方案)

C# Label 有滚动条(或TextBox不能选中文字的解决方案)

时间:2023-12-22 22:17:32

相关推荐

C# Label 有滚动条(或TextBox不能选中文字的解决方案)

最近再研究一个小程序,需要显示出来的内容不能被复制,再网上看到有说将TextBox的ReadOnly设置为True、ShortcutsEnabled设置为false,不过这样弄了之后内容虽然不能复制了,但是内容还是可以被选中(本人有点小完美主义,- -!,先自己笔视下自己),最终通过网上的资料和自己的研究总算有个较为完美的解决方案。

解决思路

通过Panel+Label达到效果。Panel提供滚动条,Label达到不能选中不能复制的效果。

参数设置

Panel

AutoScroll=True

Label

AutoSize=TrueDock=TopMaximumSize=(Panel.width-15,0)//15为滚动条的宽度

实现

Panel

int lastRightPanelVerticalScrollValue = -1;//为鼠标滚动事件提供一个静态变量,用来存储上次滚动后的VerticalScroll.Valuepanel.MouseWheel += Panel_MouseWheel;//添加鼠标的滚动事件private void Panel_MouseWheel(object sender, MouseEventArgs e){if (!(((Panel)sender).VerticalScroll.Visible == false ||(((Panel)sender).VerticalScroll.Value == 0 && e.Delta > 0) ||(((Panel)sender).VerticalScroll.Value == lastRightPanelVerticalScrollValue && e.Delta < 0))){((Panel)sender).VerticalScroll.Value += 10;lastRightPanelVerticalScrollValue = ((Panel)sender).VerticalScroll.Value;((Panel)sender).Refresh();((Panel)sender).Invalidate();((Panel)sender).Update();}}

Label

Label.MouseWheel += Label_MouseEnter;//添加鼠标进入Label事件private void label_MouseEnter(object sender, EventArgs e){Panel.Focus();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。