日期:2014-05-19  浏览次数:21284 次

<请教> 如何禁止TextBox与ComboBox选择已输入的文本内容???
功能要求:

> >   两者都要保持能正常输入文本,   但是不能用鼠标选择已经输入的文本内容...
> >   重写父类,拓展一个属性,用于控制它们在得到焦点时是否显示[输入光标]...
      (第二个要求在TextBox实现了,但是ComboBox用了同样的方法,却不起作用...)

分不多,仅仅30点,但已经是我的全部家产了...

希望大家能积极帮助...

先谢了...

------解决方案--------------------
1.过滤掉粘贴,按键消息
2.参考代码
namespace ComeBoxWithOutMenuDemo
{
public partial class ComeBoxEx : System.Windows.Forms.ComboBox
{
public ComeBoxEx()
{
InitializeComponent();

IntPtr ehWnd = FindWindowEx(base.Handle, IntPtr.Zero, "Edit ", " ");
SubClassHwnd sub = new SubClassHwnd();
sub.AssignHandle(ehWnd);
}

[DllImport( "user32.dll ")]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

public class SubClassHwnd : System.Windows.Forms.NativeWindow
{
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x7b)
return;
base.WndProc(ref m);
}
}
}
}
------解决方案--------------------
最好在mouseup里写和keyup里写
------解决方案--------------------
你可以在combox的mouseup事件里写this.comboBox1.Select(0, 0);
------解决方案--------------------
把简单的问题搞复杂了!!!

在mouseup里写和keyup里让textBox1.SelectionLength=0就全搞定
------解决方案--------------------
哈哈...

(试了LZ的代码后) 看来好像只有我才听得懂LZ的意思...

LS的,你在文本框多输入一点内容,用您所说的代码,运行后试试用[Shift+方向键]来选取文本...

注意: 由后向前的方向选取,是按住不放的...你会发现总会选中一字符...