在文本框中的鼠标位置放置文本

亚麻

尽管有许多类似的问题,我仍无法找到答案。我想做的是这样的:

我有一个带有一些文本的文本框和几个带有图片的图片框。如果我执行从图片到文本框的拖放操作,则应在进行拖放时将光标插入到文本框内光标所在的位置(即发生mouseup事件的位置)。

第一部分很好:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
    // Create custom text ...
    pictureBox1.DoDragDrop("Some custom text", DragDropEffects.Copy);
}

private void textBox1_DragEnter(object sender, DragEventArgs e) {
    if (e.Data.GetDataPresent(DataFormats.Text))
        e.Effect = DragDropEffects.Copy;
    else
        e.Effect = DragDropEffects.None;
}

我的问题是如何定义放置文本的位置:

private void textBox1_DragDrop(object sender, DragEventArgs e) {
        textBox1.Text.Insert(CORRECT_POSITION, e.Data.GetData(DataFormats.Text).ToString());
    }

有什么建议?

编辑:我试图用GetCharIndexFromPosition()获得正确的位置,但是它似乎没有返回正确的位置。以下代码确实返回了字符位置,但是我不知道它是从哪里获取的。显然,它并不代表光标的位置。

private void textBox1_DragDrop(object sender, DragEventArgs e) {
    TextBox textBox1 = (TextBox)sender;
    System.Drawing.Point position = new System.Drawing.Point(e.X, e.Y);
    int index = textBox1.GetCharIndexFromPosition(position);
    MessageBox.Show(index.ToString());
}
闲置心智

您需要将当前鼠标位置转换为TextBox中的客户坐标。另外,您可以在DragOver()事件中移动插入点,以便用户可以看到将文本插入到的位置:

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            pictureBox1.DoDragDrop("duck", DragDropEffects.Copy);
        }
    }

    void textBox1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.Text))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }

    void textBox1_DragOver(object sender, DragEventArgs e)
    {
        int index = textBox1.GetCharIndexFromPosition(textBox1.PointToClient(Cursor.Position));
        textBox1.SelectionStart = index;
        textBox1.SelectionLength = 0;
    }

    void textBox1_DragDrop(object sender, DragEventArgs e)
    {
        string txt = e.Data.GetData(DataFormats.Text).ToString();
        int index = textBox1.GetCharIndexFromPosition(textBox1.PointToClient(Cursor.Position));
        textBox1.SelectionStart = index;
        textBox1.SelectionLength = 0;
        textBox1.SelectedText = txt;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在警报对话框的消息字段中的方便位置放置文本

来自分类Dev

将HTML文本框以固定位置放置在桌面和移动网站上的图像上

来自分类Dev

如何在TextArea中的特定位置放置文本

来自分类Dev

文本框中的鼠标指针

来自分类Dev

使用iTextSharp在特定(绝对)位置放置图像和文本

来自分类Dev

移动到文本在文本框中开始的位置?

来自分类Dev

移动到文本在文本框中开始的位置?

来自分类Dev

更改文本框的位置

来自分类Dev

鼠标单击事件上文本框结尾处的鼠标位置

来自分类Dev

相互放置输入(文本框)的CSS

来自分类Dev

在富文本框中的光标位置插入图像

来自分类Dev

以编程方式移动页面中的按钮/文本框位置

来自分类Dev

文本框的名称取决于它在ArrayList中的位置

来自分类Dev

C#在文本框中获取焦点位置/索引

来自分类Dev

获取位置值以在文本框javascript中填充

来自分类Dev

文本框中的起始位置(html / css)

来自分类Dev

获取文本框中单击的单词的位置(Javascript)

来自分类Dev

html:如何在未居中的文本框中居中放置文本

来自分类Dev

html:如何在未居中的文本框中居中放置文本

来自分类Dev

将鼠标悬停在不同的位置时,图像上的CSS不同的文本框

来自分类Dev

C#| 如何通过鼠标位置在文本框中选择单词或标签?

来自分类Dev

Gridview中的文本框

来自分类Dev

pygame中的文本框

来自分类Dev

Android中的文本框

来自分类Dev

phpspreadsheet中的文本框?

来自分类Dev

多个文本框中的文本识别

来自分类Dev

从文本框中删除文本

来自分类Dev

从文本框中动态获取文本

来自分类Dev

删除文本框中的选定文本

Related 相关文章

热门标签

归档