对于Winforms文本框,当您单击并拖动文本时,会突出显示该文本。有没有办法确定用户拖过哪个方向?
答案 0 :(得分:2)
使用Windows TextBox选择API无法获取此信息。例如,EM_GETSEL
消息定义了选择的起始和结束字符位置,但是以预定义(排序)顺序定义。
但是,您可以通过处理控件的MouseMove
事件来获取此信息。例如:
textBox1.MouseMove += new MouseEventHandler(textBox1_MouseMove);
void textBox1_MouseMove(object sender, MouseEventArgs e)
{
Control tbCtrl = sender as Control;
// the mouse coordinate values here are relative to the coordinates of the control that raised the event
int mouseX = e.X;
...
}
通过向mouseX
应用某些逻辑,您可能会发现光标移动的平均方向。如果用户进行线性运动,它将最有效。如果您只想在用户拖动鼠标时引发事件,您还可以处理文本框的拖放事件以获取类似的鼠标信息。