功能要求:>> 两者都要保持能正常输入文本, 但是不能用鼠标选择已经输入的文本内容...
>> 重写父类,拓展一个属性,用于控制它们在得到焦点时是否显示[输入光标]...
(第二个要求在TextBox实现了,但是ComboBox用了同样的方法,却不起作用...)分不多,仅仅30点,但已经是我的全部家产了...希望大家能积极帮助...先谢了...
>> 重写父类,拓展一个属性,用于控制它们在得到焦点时是否显示[输入光标]...
(第二个要求在TextBox实现了,但是ComboBox用了同样的方法,却不起作用...)分不多,仅仅30点,但已经是我的全部家产了...希望大家能积极帮助...先谢了...
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);
}
}
}
}
--------------------------------------------
A: 这个功能可以用SelectionLength属性来判断.
public static extern bool HideCaret(IntPtr hWnd);在TextBox用:HideCaret(this.text1.Handle);成功把光标隐藏,可是用在ComboBox却不起作用.我也尝试过用低级封装,断承NativeWindow的方式处理,也是没有效果...
{
if (e.Shift && (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right))
{
if (this.textBox1.SelectionLength > 0)
{
this.textBox1.SelectionLength = 0;
}
}
}private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (this.textBox1.SelectionLength > 0)
{
this.textBox1.SelectionLength = 0;
}
}按道理说是可以屏蔽文本选择功能...可是奇怪的是,每次用Shift+[方向键]按住不放时都总会选取到一个字符.很不完美...我想要的是不出现任何的[蓝底白字]...该怎么办呢???