【问题标题】:Get the word under the cursor what is my mistake?获取光标下的单词我的错误是什么?
【发布时间】:2013-03-26 13:15:37
【问题描述】:

我的错误是什么?我想在网站上对 textbox2 说一句话。对不起,因为我的英语不好。 :)

private void txtHoverWord_MouseMove(object sender, MouseEventArgs e){
    if (!(sender is TextBox)) return;
    var targetTextBox = sender as TextBox;
    if (targetTextBox.TextLength < 1) return;

    var currentTextIndex = textBox2.GetCharIndexFromPosition(e.Location);
    var wordRegex = new Regex(@"(\w+)");
    var words = wordRegex.Matches(textBox2.Text);
    if (words.Count < 1) return;

    var currentWord = string.Empty;
    for (var i = words.Count - 1; i >= 0; i--)
    {
        if (words[i].Index <= currentTextIndex)
        {
            currentWord = words[i].Value;
            break;
        }
    }

    if (currentWord == string.Empty) return;
    toolTip1.SetToolTip(textBox2, currentWord);
}

【问题讨论】:

  • 您遇到任何错误,是否有异常? 我的错误是什么?不是问的好方法..

标签: c# textbox mouseevent mouseover getchar


【解决方案1】:

我相信您可能无意中在代码中指定了 textBox2 而不是 targetTextBox。

尝试将其修改为以下内容:

private void txtHoverWord_MouseMove(object sender, MouseEventArgs e)
{
    if (!(sender is TextBox)) return;
    var targetTextBox = sender as TextBox;
    if (targetTextBox.TextLength < 1) return;

    var currentTextIndex = targetTextBox.GetCharIndexFromPosition(e.Location);
    var wordRegex = new Regex(@"(\w+)");
    var words = wordRegex.Matches(targetTextBox.Text);
    if (words.Count < 1) return;

    var currentWord = string.Empty;
    for (var i = words.Count - 1; i >= 0; i--)
    {
        if (words[i].Index <= currentTextIndex)
        {
            currentWord = words[i].Value;
            break;
        }
    }

    if (currentWord == string.Empty) return;
    tooltip1.SetToolTip(targetTextBox, currentWord);
}

请注意,我将 textBox2 更改为 targetTextBox 在您的代码中出现的任何位置。

【讨论】:

  • targetTextBox.GetCharIndexFromPosition(e.Location);不允许visual studio targettextbox没有getchar fonc。
  • @kdr_81 我想你是说targetTextBox 不支持GetCharIndexFromPosition 方法。但是,从 .Net 2.0 开始,此函数已存在于 TextBox 类中。您能否尝试澄清您遇到的问题?
  • 现在支持 :) 但不工作我有 2 个问题 tooltip1.SetToolTip(targetTextBox, currentWord);它的 tooltip1 或 tooltip ?以及我如何称呼这种方法:)
  • @kdr_81 无论您的 ToolTip 对象在您的代码中被命名为什么,它都将是。您最初在代码中将其命名为 toolTip1。
  • 你需要创建一个ToolTip对象,然后调用SetToolTip。
猜你喜欢
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2012-04-15
相关资源
最近更新 更多