15 个解决方案
#1
TextBox.SelectionStart
#2
请注意:如果 是左键的话,这样用肯定可以, 但是现在是右键
#3
右键不应该改变插入点位置。这是Windows标准体验,建议你也不要轻易改动,不然会遭用户厌的。
#4
哦, 感谢你的提醒.现在的问题是这样的, 当我在文本框中单击右键后,选择右键菜单中的值,并且插入到光标的位置,但此时,光标的位置必须先用左键定位后,才能插入到相应的位置,我想改成右键就可直接找到相应的位置。
对于你说的这种情况 (会遭用户厌),只要在文本框中才改变右键的功用,而其它位置还是用Windows标准(还原默认) 就可以了
#5
可以获取鼠标的位置,在区分左右键..不知道这个思路是否可以解决你的问题
#6
你右击之前不选中字符么
#7
你可以用 RichTextBox 看看。
#8
如果单纯区分左右键 的话, 用e.Button 就可以区分, 您可能没看懂我的问题
#9
我的意思 就是不在左键 辅助光标定位的情况下,直接用右键 定位光标 并且 插入 指定 的值到光标位置
#10
因其它原因,不能用RichTextBox ,如果 能用的话就好办多了,
我现在就想改变windows 右键 消息
但还没找到解决方案
#11
一种思路,自己写一个类,继承自TextBox,在里面重载鼠标消息,是可以获取鼠标位置的,然后就可以判断鼠标位置了
#12
帮你搞定了。
新建一个类,编写如下代码:
使用 UserControl1 代替 TextBox。
新建一个类,编写如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class UserControl1 : TextBox
{
public UserControl1()
{
//InitializeComponent();
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0204)
{
m.Msg = 0x0201;
base.WndProc(ref m);
m.Msg = 0x0204;
}
base.WndProc(ref m);
}
}
}
使用 UserControl1 代替 TextBox。
#13
请问如果重载的话怎么知道要改哪个地方,他有哪些方法
#14
感谢ing!此方法很好!
#15
不知道你问的什么? 我要结贴 了,哈哈
#1
TextBox.SelectionStart
#2
请注意:如果 是左键的话,这样用肯定可以, 但是现在是右键
#3
右键不应该改变插入点位置。这是Windows标准体验,建议你也不要轻易改动,不然会遭用户厌的。
#4
哦, 感谢你的提醒.现在的问题是这样的, 当我在文本框中单击右键后,选择右键菜单中的值,并且插入到光标的位置,但此时,光标的位置必须先用左键定位后,才能插入到相应的位置,我想改成右键就可直接找到相应的位置。
对于你说的这种情况 (会遭用户厌),只要在文本框中才改变右键的功用,而其它位置还是用Windows标准(还原默认) 就可以了
#5
可以获取鼠标的位置,在区分左右键..不知道这个思路是否可以解决你的问题
#6
你右击之前不选中字符么
#7
你可以用 RichTextBox 看看。
#8
如果单纯区分左右键 的话, 用e.Button 就可以区分, 您可能没看懂我的问题
#9
我的意思 就是不在左键 辅助光标定位的情况下,直接用右键 定位光标 并且 插入 指定 的值到光标位置
#10
因其它原因,不能用RichTextBox ,如果 能用的话就好办多了,
我现在就想改变windows 右键 消息
但还没找到解决方案
#11
一种思路,自己写一个类,继承自TextBox,在里面重载鼠标消息,是可以获取鼠标位置的,然后就可以判断鼠标位置了
#12
帮你搞定了。
新建一个类,编写如下代码:
使用 UserControl1 代替 TextBox。
新建一个类,编写如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class UserControl1 : TextBox
{
public UserControl1()
{
//InitializeComponent();
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0204)
{
m.Msg = 0x0201;
base.WndProc(ref m);
m.Msg = 0x0204;
}
base.WndProc(ref m);
}
}
}
使用 UserControl1 代替 TextBox。
#13
请问如果重载的话怎么知道要改哪个地方,他有哪些方法
#14
感谢ing!此方法很好!
#15
不知道你问的什么? 我要结贴 了,哈哈