18 个解决方案
#1
参考窗体的
ProcessKeyMessage
ProcessCmdKey
WndProc
ProcessKeyMessage
ProcessCmdKey
WndProc
#2
我是菜鸟,详细点好吗?
#3
非焦点的情况 好象做不到吧?
难道要焦点判断?
当textBox1 焦点的时候 textBox1 里面 将键盘的输入 记录 然后 写进 textBox2里面?
这样? 晕...
我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
难道要焦点判断?
当textBox1 焦点的时候 textBox1 里面 将键盘的输入 记录 然后 写进 textBox2里面?
这样? 晕...
我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
#4
不是这样的。是我说的不清楚吗?那来个实例吧: 在一个窗体上,有一个按钮和panel。要求点击按钮后,我按空格键或上下左右键后,panel上都给我画出一个矩形。
请考虑,如果我的窗体上不止一个按钮,还有几个textBox,你的方法的适用吗。
#5
在其它控件上处理特殊的事件.
#6
private void button1_Click(object sender, EventArgs e)
{
.......................
panel1.Focus();
}
#7
1.监视form_keypress事件,响应控件事件
2.监视prowmc事件
3.可以挂钩子
2.监视prowmc事件
3.可以挂钩子
#8
6楼的,Focus()方法根本不行。我早就试过了。
7楼的,你说的prowmcGoogle都搜不到相关信息,让我这菜鸟怎么用?
能不能详细一点?
7楼的,你说的prowmcGoogle都搜不到相关信息,让我这菜鸟怎么用?
能不能详细一点?
#9
关注下
up
up
#10
搜一下WINAPI消息,或钩子函数。
#11
求代码~
up
up
#12
学习一下,感觉用控件的响应键盘事件好像解决不了这个问题,因为无法知道到底有多少个控件,且需要为每个控件写代码,应该是要直接拦截键盘消息吧
#13
好啊,直接拦截。请教一下怎么拦截?
#14
路过,学习!!!!!!!!!!!!!!!!!
#15
画的时候把其他空间enable=false掉 是我以前找到的一个比较苯的办法 暂时还没找到更好的 如果这个办法不影响你的程序 可以试试
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
#16
画的时候把其他空间enable=false掉 是我以前找到的一个比较苯的办法 暂时还没找到更好的 如果这个办法不影响你的程序 可以试试
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
#17
bool blnStartDraw = false;
private void button1_Click(object sender, System.EventArgs e)
{
blnStartDraw = true;
}
private void button2_Click(object sender, System.EventArgs e)
{
blnStartDraw = false;
}
const int WM_KEYDOWN = 0x100;
protected override bool ProcessCmdKey(
ref Message msg,
Keys keyData
)
{
if (msg.Msg == WM_KEYDOWN)
{
if (blnStartDraw == true)
{
Graphics g = this.panel1.CreateGraphics();
g.DrawRectangle(System.Drawing.Pens.Red, 10, 10, 100, 100);
g.Dispose();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void button1_Click(object sender, System.EventArgs e)
{
blnStartDraw = true;
}
private void button2_Click(object sender, System.EventArgs e)
{
blnStartDraw = false;
}
const int WM_KEYDOWN = 0x100;
protected override bool ProcessCmdKey(
ref Message msg,
Keys keyData
)
{
if (msg.Msg == WM_KEYDOWN)
{
if (blnStartDraw == true)
{
Graphics g = this.panel1.CreateGraphics();
g.DrawRectangle(System.Drawing.Pens.Red, 10, 10, 100, 100);
g.Dispose();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
#18
谢谢了,正是我想要的!
#1
参考窗体的
ProcessKeyMessage
ProcessCmdKey
WndProc
ProcessKeyMessage
ProcessCmdKey
WndProc
#2
我是菜鸟,详细点好吗?
#3
非焦点的情况 好象做不到吧?
难道要焦点判断?
当textBox1 焦点的时候 textBox1 里面 将键盘的输入 记录 然后 写进 textBox2里面?
这样? 晕...
我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
难道要焦点判断?
当textBox1 焦点的时候 textBox1 里面 将键盘的输入 记录 然后 写进 textBox2里面?
这样? 晕...
我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
#4
不是这样的。是我说的不清楚吗?那来个实例吧: 在一个窗体上,有一个按钮和panel。要求点击按钮后,我按空格键或上下左右键后,panel上都给我画出一个矩形。
请考虑,如果我的窗体上不止一个按钮,还有几个textBox,你的方法的适用吗。
#5
在其它控件上处理特殊的事件.
#6
private void button1_Click(object sender, EventArgs e)
{
.......................
panel1.Focus();
}
#7
1.监视form_keypress事件,响应控件事件
2.监视prowmc事件
3.可以挂钩子
2.监视prowmc事件
3.可以挂钩子
#8
6楼的,Focus()方法根本不行。我早就试过了。
7楼的,你说的prowmcGoogle都搜不到相关信息,让我这菜鸟怎么用?
能不能详细一点?
7楼的,你说的prowmcGoogle都搜不到相关信息,让我这菜鸟怎么用?
能不能详细一点?
#9
关注下
up
up
#10
搜一下WINAPI消息,或钩子函数。
#11
求代码~
up
up
#12
学习一下,感觉用控件的响应键盘事件好像解决不了这个问题,因为无法知道到底有多少个控件,且需要为每个控件写代码,应该是要直接拦截键盘消息吧
#13
好啊,直接拦截。请教一下怎么拦截?
#14
路过,学习!!!!!!!!!!!!!!!!!
#15
画的时候把其他空间enable=false掉 是我以前找到的一个比较苯的办法 暂时还没找到更好的 如果这个办法不影响你的程序 可以试试
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
#16
画的时候把其他空间enable=false掉 是我以前找到的一个比较苯的办法 暂时还没找到更好的 如果这个办法不影响你的程序 可以试试
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
panel的 tabindex改成0 试下 我临时想到的 没试过
关注此贴 我也想找到更好的办法
#17
bool blnStartDraw = false;
private void button1_Click(object sender, System.EventArgs e)
{
blnStartDraw = true;
}
private void button2_Click(object sender, System.EventArgs e)
{
blnStartDraw = false;
}
const int WM_KEYDOWN = 0x100;
protected override bool ProcessCmdKey(
ref Message msg,
Keys keyData
)
{
if (msg.Msg == WM_KEYDOWN)
{
if (blnStartDraw == true)
{
Graphics g = this.panel1.CreateGraphics();
g.DrawRectangle(System.Drawing.Pens.Red, 10, 10, 100, 100);
g.Dispose();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void button1_Click(object sender, System.EventArgs e)
{
blnStartDraw = true;
}
private void button2_Click(object sender, System.EventArgs e)
{
blnStartDraw = false;
}
const int WM_KEYDOWN = 0x100;
protected override bool ProcessCmdKey(
ref Message msg,
Keys keyData
)
{
if (msg.Msg == WM_KEYDOWN)
{
if (blnStartDraw == true)
{
Graphics g = this.panel1.CreateGraphics();
g.DrawRectangle(System.Drawing.Pens.Red, 10, 10, 100, 100);
g.Dispose();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
#18
谢谢了,正是我想要的!