winform 窗体内有多个textbox 我希望使用textbox的自动完成功能,但同时希望用回车来代替tab。也就是说当 自动完成那个下拉框不出现的时候按回车 跳转到下一个textbox,如果处于自动完成状态 则回车并不跳转,只是取得当前选择的值。
这个应该怎么设置?
怎么判断 自动完成下拉框 是否出现?怎么解决回车冲突的问题?求教!
就这么多分了
这个应该怎么设置?
怎么判断 自动完成下拉框 是否出现?怎么解决回车冲突的问题?求教!
就这么多分了
解决方案 »
- 关于.net 3.5的属性简写的一些问题
- 新手请教,关于些数学方面的编程公式,请高手赐教(2)
- .net中有关数据备份与恢复的问题,求教!
- Stream StreamWriter StreamReader FileStream 的问题
- 如何追加二进制文件数据
- unicode和GB2132的问题
- 再开一贴,熟悉ORACLE 10g 的帮下忙啊
- 在C#中定义了一个二维数组,如何得到它的第一维和第二维的个数
- 关于vs.net的美工问题 100分
- 请教C#的WinSock编程中使用WSAAsyncSelect函数的问题(如何将消息推送给窗口句柄)
- TreeView递归问题!
- 关于c#抓取 dom 的问题,轻松得100分
看看这样行不行:private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && !textBox1.AutoCompleteCustomSource.Contains(textBox1.Text))
SendKeys.Send("{TAB}");
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
TextBox textBox = sender as TextBox;//触发对象
if (e.KeyCode == Keys.Enter && !textBox.AutoCompleteCustomSource.Contains(textBox.Text))
SendKeys.Send("{TAB}");
}
{
if (e.KeyValue == 13)
textBox4.Focus();//用户名
} private void textBox4_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
comboBox1.Focus();//密码
} private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
this.textBox3.Focus();//权限
} private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)//验证码
button1_Click(null, null);//登录事件
}
再告诉你 禁用TAB键的方法,选择控件(如textBox3等等)的TABSTOP属性,令其为false就可以了
?
{
if (e.KeyData == Keys.Enter)
textBox2.Focus();
}
private void textBox2_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
textBox3.Focus();
}
private void textBox3_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
textBox4.Focus();
}
我这个只能实现回车自动 跳转,楼主可以参考一下!
不禁用TAB ,回车也能代替Tab的功能
先写一个基类的Form,以后每个Form都继承这个Form就可以了
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace Common
{
public partial class frmBase : Form
{
public frmBase()
{
InitializeComponent();
} protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (null != ActiveControl && null != ActiveControl.Tag && ActiveControl.Tag.ToString() == "Self-KeyPress") return false;
if ((!(ActiveControl is Button)) && (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Enter))
{
if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}
if (keyData == Keys.Down)
System.Windows.Forms.SendKeys.Send("{TAB}");
else
SendKeys.Send("+{Tab}");
return true;
}
else
return base.ProcessCmdKey(ref msg, keyData);
}
}
}
禁用TAB 也就达到了 回车代替Tab的功能了
[/Quote不禁用也行 TAB和回车意思就一样了1.只需设置控件的TABSTOP属性为TRUE
2.视图——TAB键顺序——为每个控件编号
TABINDEX 越小 越先执行!!比如textBox1的TABINDEX =0;
textBox2的TABINDEX =1;
焦点在textBox1 tab键就跳转到textBox2;
你可按你想要执行的顺序对控件的TABINDEX 按顺序编号 就可以了
说得够详细了吧MARK~~~~~~
3楼的貌似不行。因为选到那个的时候就自动为textbox添加了,但是还没有按回车。
至于怎么判断 自动完成下拉框 是否出现?
那就要具体的做一些判断啦
{
RegisterKeyDownScript();
c.Attributes["onkeydown"] = "javascript:KeyDownEventHandler();";
} protected void RegisterKeyDownScript()
{
ClientScriptManager cs = Page.ClientScript;
System.Type cstype = this.GetType();
if (!cs.IsClientScriptBlockRegistered(cstype, "CSP-keydown-function"))
{
cs.RegisterClientScriptBlock(cstype, "CSP-keydown-function",
"<script language=\"JavaScript\">" + "\r\n"
+ "function KeyDownEventHandler() {" + "\r\n"
+ " if(event.keyCode==13)event.keyCode=9;" + "\r\n"
+ "}" + "\r\n"
+ "</script>");
}
} #endregion