Отображение подсказки на парении мыши текста

Вы можете сделать это также с помощью localStorage, как правило, большинство браузеров позволяют хранить больше данных (максимум 5 МБ в 2019 году) в localalstorage, а также для производительности, если вам не нужен сервер для их чтения.

window.localStorage.array_1 = JSON.stringify(itemsarray);
console.log(window.localStorage.array_1);

/// and to convert it back to an array object
console.log(JSON.parse(window.localStorage.array_1));
19
задан Jim Fell 10 June 2016 в 19:41
поделиться

4 ответа

Посмотрите, это работает. Если у вас есть проблемы, сообщите мне:

using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1() { InitializeComponent(); }

        ToolTip tip = new ToolTip();
        void richTextBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (!timer1.Enabled)
            {
                string link = GetWord(richTextBox1.Text, richTextBox1.GetCharIndexFromPosition(e.Location));
                //Checks whether the current word i a URL, change the regex to whatever you want, I found it on www.regexlib.com.
//you could also check if current word is bold, underlined etc. but I didn't dig into it.
                if (System.Text.RegularExpressions.Regex.IsMatch(link, @"^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$"))
                {
                    tip.ToolTipTitle = link;
                    Point p = richTextBox1.Location;
                    tip.Show(link, this, p.X + e.X,
                        p.Y + e.Y + 32, //You can change it (the 35) to the tooltip's height - controls the tooltips position.
                        1000);
                    timer1.Enabled = true;
                }
            }
        }

        private void timer1_Tick(object sender, EventArgs e) //The timer is to control the tooltip, it shouldn't redraw on each mouse move.
        {
            timer1.Enabled = false;
        }

        public static string GetWord(string input, int position) //Extracts the whole word the mouse is currently focused on.
        {
            char s = input[position];
            int sp1 = 0, sp2 = input.Length;
            for (int i = position; i > 0; i--)
            {
                char ch = input[i];
                if (ch == ' ' || ch == '\n')
                {
                    sp1 = i;
                    break;
                }
            }

            for (int i = position; i < input.Length; i++)
            {
                char ch = input[i];
                if (ch == ' ' || ch == '\n')
                {
                    sp2 = i;
                    break;
                }
            }

            return input.Substring(sp1, sp2 - sp1).Replace("\n", "");
        }
    }
}
14
ответ дан 30 November 2019 в 04:08
поделиться

Использование:

ToolTip tip = new ToolTip();
private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
    Cursor a = System.Windows.Forms.Cursor.Current;
    if (a == Cursors.Hand)
    {
        Point p = richTextBox1.Location;
        tip.Show(
            GetWord(richTextBox1.Text,
                richTextBox1.GetCharIndexFromPosition(e.Location)),
            this,
            p.X + e.X,
            p.Y + e.Y + 32,
            1000);
    }
}

Используйте функцию GetWord из моего другого ответа, чтобы получить слово, на которое наведено курсор мыши. Используйте логику таймера, чтобы отключить повторное отображение всплывающей подсказки, как в предыдущем. пример.

В этом примере справа вверху всплывающая подсказка показывает наведенное слово, проверяя указатель мыши.

Если это все еще не то, что вы ищете, укажите условие, которое характеризует слово, которое вы хотите использовать всплывающую подсказку. Если вам нужно слово, выделенное жирным шрифтом, скажите, пожалуйста.

0
ответ дан 30 November 2019 в 04:08
поделиться

Это не изящно, но вы могли бы использовать метод RichTextBox.GetCharIndexFromPosition, чтобы вернуть вам индекс символа, над которым в данный момент находится курсор, а затем использовать этот индекс для вычисления если это по ссылке, точке доступа или любой другой специальной области. Если это так, покажите свою всплывающую подсказку (и вы, вероятно, захотите передать координаты мыши в метод Show всплывающей подсказки, а не просто передавать текстовое поле, чтобы всплывающую подсказку можно было расположить рядом со ссылкой).

Пример Вот: http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.getcharindexfromposition (VS.80) .aspx

2
ответ дан 30 November 2019 в 04:08
поделиться

Вы не должны использовать личную подсказку управления , но образуют единую . Этот пример работает хорошо:

public partial class Form1 : Form
{
    private System.Windows.Forms.ToolTip toolTip1;

    public Form1()
    {
        InitializeComponent();
        this.components = new System.ComponentModel.Container();
        this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);

        MyRitchTextBox myRTB = new MyRitchTextBox();
        this.Controls.Add(myRTB);

        myRTB.Location = new Point(10, 10);
        myRTB.MouseEnter += new EventHandler(myRTB_MouseEnter);
        myRTB.MouseLeave += new EventHandler(myRTB_MouseLeave);
    }


    void myRTB_MouseEnter(object sender, EventArgs e)
    {
        MyRitchTextBox rtb = (sender as MyRitchTextBox);
        if (rtb != null)
        {
            this.toolTip1.Show("Hello!!!", rtb);
        }
    }

    void myRTB_MouseLeave(object sender, EventArgs e)
    {
        MyRitchTextBox rtb = (sender as MyRitchTextBox);
        if (rtb != null)
        {
            this.toolTip1.Hide(rtb);
        }
    }


    public class MyRitchTextBox : RichTextBox
    {
    }

}
5
ответ дан 30 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: