最近再研究一个小程序,需要显示出来的内容不能被复制,再网上看到有说将TextBox的ReadOnly设置为True、ShortcutsEnabled设置为false,不过这样弄了之后内容虽然不能复制了,但是内容还是可以被选中(本人有点小完美主义,- -!,先自己笔视下自己),最终通过网上的资料和自己的研究总算有个较为完美的解决方案。
解决思路
通过Panel+Label达到效果。Panel提供滚动条,Label达到不能选中不能复制的效果。
参数设置
Panel
AutoScroll=TrueLabel
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();}