菜鸟请教俩问题

pprr2009 2009-08-05 09:28:56
1、关于键盘操作问题 最近做个程序 窗体需要窗体纯小键盘操作 窗体主要是TextBox和Button combox等 以前没怎么接触过这种 不知道思路 请问如何按下Enter键 能从一个控件激活另一个控件?比如 从一个textbox移动到下一个textbox 等都录完 按回车就能执行button操作
按回车执行button操作 我的想法是用:KeyPress的事件执行该button的操作 这样感觉代码重复写了不太好 还一个想法是 利用委托能不能实现?就是键盘的事件和button放到一起 执行按enter都能激发Button事件 不知道委托能不能实现 对委托的使用有点模糊 也没经验
2、工作中写的功能 如何在实现的时候能够跟主程序接上?现在做的功能只是考虑了如何实现 但是最终要加到主程序中,不知道应该怎么编码实现功能后还能加到别人做的主程序中。请各位朋友赐教~~

请知道第一个问题的朋友详细说说 我比较菜 谢谢各位~奉上100分感谢
...全文
189 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancingbit 2009-08-06
  • 打赏
  • 举报
回复
在button1_Click入口处设置断点,看它断不断?
moneky 2009-08-06
  • 打赏
  • 举报
回复
学习学习
boringame 2009-08-06
  • 打赏
  • 举报
回复
自己写个类封装一下这样的逻辑咯。。。
让爱延续 2009-08-06
  • 打赏
  • 举报
回复
当按下回车时,激活下一控件并使它或取焦点。
jieon 2009-08-06
  • 打赏
  • 举报
回复

感觉还是直接设置控件的TABINDEX好些 按TAB键来切换焦点,不用这么麻烦
pprr2009 2009-08-06
  • 打赏
  • 举报
回复
出现个问题 将acceptbutton设置为button1 按下回车 追代码 发现按下回车后 没有进入button1_Click
不晓得是怎么回事.
Cherishny 2009-08-06
  • 打赏
  • 举报
回复
按回车就能执行button操作

Enter 键值为 13

KeyPreview 设为true

protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
switch (e.KeyValue)
{
case 13:
//Doing()……你要做的()
break;
//case N:
default : break;
}
}

coconutyf 2009-08-06
  • 打赏
  • 举报
回复
简单

public class Form4 : Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

#region Windows 窗体设计器生成的代码

/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(71, 30);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 21);
this.textBox1.TabIndex = 0;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(71, 70);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(100, 21);
this.textBox2.TabIndex = 1;
//
// button1
//
this.button1.Location = new System.Drawing.Point(230, 46);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form4
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(345, 273);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.KeyPreview = true;
this.Name = "Form4";
this.Text = "Form4";
this.ResumeLayout(false);
this.PerformLayout();

}

#endregion

private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;

public Form4()
{
InitializeComponent();
}

protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (button1.Focused)
base.OnKeyDown(e);
else
SendKeys.Send("{TAB}");
}
else
base.OnKeyDown(e);
}

private void button1_Click(object sender, EventArgs e)
{
Close();
}
}
ximi82878 2009-08-06
  • 打赏
  • 举报
回复
你可以写一个公共类啊,获得键盘点击事件,如果是ENTER的话,就把当前的textbox扔进去,然后在公共类里把焦点移到这个textbox的下一个焦点上 SelectNextControl(this.txtyoufa, true, true, true, true);
feixiang0713 2009-08-06
  • 打赏
  • 举报
回复
yanm7788 2009-08-06
  • 打赏
  • 举报
回复
up
a233786118 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dancingbit 的回复:]
使用方向键触发Button?真的是很无语啊...

使用KeyDown吧,KeyPress也许也可以。

如果是需要完成纯键盘的操作窗体,也不用这么麻烦,Windows中本来就支持纯键盘的操作。象控件之前的转移可以使用Tab键,下拉列表中选项的切换使用上、下的方向键,复选框的选择使用空格键.....这些基本上是Windows窗口的设计习惯,随便改变未必就是一件好事。
[/Quote]

同意!
dancingbit 2009-08-05
  • 打赏
  • 举报
回复
使用方向键触发Button?真的是很无语啊...

使用KeyDown吧,KeyPress也许也可以。

如果是需要完成纯键盘的操作窗体,也不用这么麻烦,Windows中本来就支持纯键盘的操作。象控件之前的转移可以使用Tab键,下拉列表中选项的切换使用上、下的方向键,复选框的选择使用空格键.....这些基本上是Windows窗口的设计习惯,随便改变未必就是一件好事。
pprr2009 2009-08-05
  • 打赏
  • 举报
回复
比如我按方向键的上 触发button1
按下 触发button2
按回车 触发button3 该如何做?

是不是用KeyPress的方法下作判断?然后写入button下的方法?

窗体上的下拉列表 怎么通过按回车键就展开 然后按下键选择 按回车选中 然后按键盘任意键就能跳入紧临的textbox进行录入
麻烦各位朋友说的具体点 谢谢 这种纯键盘操作的窗体 功能倒是做完 就是键盘操作还没解决~
老Key 2009-08-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dancingbit 的回复:]
如果是在不同情况下触发不同Button的Click事件的话,那么就在设为AcceptButton的Click事件中进行条件判断,然后使用PerformClick方法模拟触发其他Button的Click事件。
[/Quote]
就是这样
xinghuanonline 2009-08-05
  • 打赏
  • 举报
回复
up
dancingbit 2009-08-05
  • 打赏
  • 举报
回复
如果是在不同情况下触发不同Button的Click事件的话,那么就在设为AcceptButton的Click事件中进行条件判断,然后使用PerformClick方法模拟触发其他Button的Click事件。
akpeter 2009-08-05
  • 打赏
  • 举报
回复
UP
dancingbit 2009-08-05
  • 打赏
  • 举报
回复
Enter事件是焦点转移的时候发生的,并不是按回车键。
dancingbit 2009-08-05
  • 打赏
  • 举报
回复
TextBox之间的移动可以用Tab键完成。

难道不能确定按回车键之后要触发哪个Button的Click事件吗?
加载更多回复(5)

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧