gpt4 book ai didi

c# - RichTextBox 和插入符位置

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:49 26 4
gpt4 key购买 nike

我在选择文本时找不到确定插入符号在 RTB 中的位置的方法。 SelectionStart 不是一个选项

我想检测选择的方向是向后还是向前。我试图在 SelectionChanged event 中实现这一点。任何提示将不胜感激。

编辑:

我通过使用 mouseDown 和 mouseUp 事件注册鼠标移动方向(X 轴)解决了这个问题。

代码:

bool IsMouseButtonPushed = false;
int selectionXPosition = 0, sDirection=0;

private void richTextBox_SelectionChanged(object sender, EventArgs e)
{
if (sDirection==2)//forward
{
//dosomething
}
}

private void richTextBox_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseButtonPushed && (selectionXPosition - e.X) > 0)//backward
{
sDirection = 1;
}
else if (IsMouseButtonPushed && (selectionXPosition - e.X) < 0)//forward
{
sDirection = 2;
}
}

private void richTextBox_MouseDown(object sender, MouseEventArgs e)
{
IsMouseButtonPushed = true;
selectionXPosition = e.X;
}

private void richTextBox_MouseUp(object sender, MouseEventArgs e)
{
IsMouseButtonPushed = false;
}

还有哪些其他方法可以做到这一点?

最佳答案

SelectionStart 和 SelectionLength 属性在左侧选择期间发生变化,SelectionLength 属性在右侧选择期间发生变化。

简单的解决方案:

int tempStart;
int tempLength;

private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
if (richTextBox1.SelectionType != RichTextBoxSelectionTypes.Empty)
{
if (richTextBox1.SelectionStart != tempStart)
lblSelectionDesc.Text = "Left" + "\n";
else if( richTextBox1.SelectionLength != tempLength)
lblSelectionDesc.Text = "Right" + "\n";
}
else
{
lblSelectionDesc.Text = "Empty" + "\n";
}

tempStart = richTextBox1.SelectionStart;
tempLength = richTextBox1.SelectionLength;

lblSelectionDesc.Text += "Start: " + richTextBox1.SelectionStart.ToString() + "\n";
lblSelectionDesc.Text += "Length: " + richTextBox1.SelectionLength.ToString() + "\n";
}

控制:

RitchTextBox + 2xLabels

enter image description here

  1. 我不确定为什么,但即使在禁用 AutoWordSelection 之后,我的鼠标也会选择整个单词。不幸的是,对于我的解决方案,这会导致选择方向发生变化。
  2. 您可能会为此使用属性更改事件。

关于c# - RichTextBox 和插入符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com