我需要实现这样的功能:
在窗体上有一排按钮,我希望做到, 1、仅单击:仅让被单击的按钮的foreColor变成红色,其他按钮的ForeColor变成黑色。 2、ctrl+单击:
if(it is not red)
{ 将其变为红色,增加foreColor为红色的按钮;}
else
{ 将其变为黑色,减少foreColor为红色的按钮;}问题就这么简单,不过我始终找不到合适的windows事件来处理。1、private void btn_dlfj1_Click(object sender, EventArgs e)
{
}
似乎在该参数e里找不到关于键盘的检测信息,2、我用keyup和keydown联合处理,发现并不能检测到按键的up信号。
private void btn_dlfj1_KeyDown(object sender, KeyEventArgs e)
{
}
private void btn_dlfj1_KeyUp(object sender, KeyEventArgs e)
{
}
在我的ctrl键保持按下的状态时,连续执行KeyDown过程,在松开键时,却没有出发up事件,奇怪了。始终不能实现,象在文件夹里选文件那样自由地选折按钮。分实在少了点,抱歉啊,有兴趣发表一下高见吧!
在窗体上有一排按钮,我希望做到, 1、仅单击:仅让被单击的按钮的foreColor变成红色,其他按钮的ForeColor变成黑色。 2、ctrl+单击:
if(it is not red)
{ 将其变为红色,增加foreColor为红色的按钮;}
else
{ 将其变为黑色,减少foreColor为红色的按钮;}问题就这么简单,不过我始终找不到合适的windows事件来处理。1、private void btn_dlfj1_Click(object sender, EventArgs e)
{
}
似乎在该参数e里找不到关于键盘的检测信息,2、我用keyup和keydown联合处理,发现并不能检测到按键的up信号。
private void btn_dlfj1_KeyDown(object sender, KeyEventArgs e)
{
}
private void btn_dlfj1_KeyUp(object sender, KeyEventArgs e)
{
}
在我的ctrl键保持按下的状态时,连续执行KeyDown过程,在松开键时,却没有出发up事件,奇怪了。始终不能实现,象在文件夹里选文件那样自由地选折按钮。分实在少了点,抱歉啊,有兴趣发表一下高见吧!
解决方案 »
- c#怎样获取到ASP.NET_SessionId
- 文件操作问题。。。。
- 不显示删除回复显示所有回复显示星级回复显示得分回复 高分在线等:台式机的内存条可以互换用吗?[
- (服务器控件)页面中有5个textbox框,分别为txt1,txt2 ……txt5 有没有办法通过循环分别给他们赋不同的值(变量)
- 对象锁定的问题.........如何得知对象是否锁定
- 图文并茂问题,跪求帮忙啊!
- 天啊,问到没有分了......FCKeditor.Net_2.2 FOR .NET的用法.
- vs2005,新建C# Office项目,提示"无法安装该项目所需的主互操作程序。将不会创建该项目。要创建项目,请手动安装主互操作程序集"
- 自己做了一个控件,可是就是不能显示,只有80分了全给了,求指点
- C#使用list显示索引超出范围,特别着急呀,拜托大家看看
- 一个简单的问题:如何实现用户不能更改窗体的大小
- 初级问题: winform datagridView 控件自动排序
{
if (keyData == [Keys.YourKey])
{
[Your Event];
}
return base.ProcessCmdKey (ref msg, keyData);
}
[Keys.YourKey]就是你的按键。假如你的按键是a的话就是Keys.a。
[Your Event]就是你要触发的事件了。假如你要触发一个button1按钮的单击事件的话就写button1_Click(this,null)
就可以了
这个要用到窗体的静态属性ModifierKeys
给你个核心代码——
private void button1_Click(object sender, EventArgs e)
{
if (Form1.ModifierKeys == Keys.Control)
{
textBox1.Text = "按下了Control";
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace 同时接受单击事件和键盘按键事件
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} //所有的按钮都使用该过程作为其代理
private void button1_Click(object sender, EventArgs e)
{
if (Form1.ModifierKeys == Keys.Control)
{
if(((Button)(sender)).ForeColor == Color.Black)
{
((Button)(sender)).ForeColor = Color.Red;
}
else
{
((Button)(sender)).ForeColor = Color.Black;
}
}
}
}
}