C# Button 问题 如何在C#里的Button的Text属性实现这样的效果: 确定(F12) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不太明白,Text属性不是直接可以设置成:确定(F12)吗? 方法一:在button的text属性中输入&f,这样alt+f或者直接按f就可以 响应相应的button的click事件,f后的字母不做计算。但是这样做有一个缺点,就是只能定义字母热键,像f1,方向键,会车键等等都不能定义。而且button的text显示时,带着这个字母。这样就给我们带来麻烦,尤其是如果输入汉语时,还得带着个英文字母。不过倒是可以提醒用户哪个键是热键,呵呵。方法二:下面是代码,很简单的。protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Left) { this.button3.PerformClick(); //this.btnTempTest.PerformClick(); } if (keyData == Keys.Right) { this.button2.PerformClick(); } return base.ProcessCmdKey(ref msg, keyData); } 如上,button3,button2的热键分别是方向键中的左和右。当然也可以设为f1,f2,会车键等等。字母?当然更没有问题了。 重载以下的方法!protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.F12) { button1_Click(null, null); return true; } return base.ProcessCmdKey(ref msg, keyData); }这样你的按钮就可以响应F12键的点击了! <form id="form1" runat="server"> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定(Enter)" /> </form>回车<script language="javascript" for="document" event="onkeydown">if (event.keyCode == 13){ document.form1.Button1.click();}</script> F12<form id="form1" runat="server"> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定(F12)" /></form><script language="javascript" for="document" event="onkeydown">if (event.keyCode == 123){ document.form1.Button1.click();}</script> 方法一: 在button的text属性中输入&f,这样alt+f或者直接按f就可以 响应相应的button的click事件,f后的字母不做计算。但是这样做有一个缺点,就是只能定义字母热键,像f1,方向键,会车键等等都不能定义。而且button的text显示时,带着这个字母。这样就给我们带来麻烦,尤其是如果输入汉语时,还得带着个英文字母。不过倒是可以提醒用户哪个键是热键,呵呵。 方法二: 下面是代码,很简单的。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Left) { this.button3.PerformClick(); //this.btnTempTest.PerformClick(); } if (keyData == Keys.Right) { this.button2.PerformClick(); } return base.ProcessCmdKey(ref msg, keyData); } 如上,button3,button2的热键分别是方向键中的左和右。当然也可以设为f1,f2,会车键等等。字母?当然更没有问题了。 楼上的完全正解!! .text="确定(F12)" 好了,如果是想按F12执行按钮事件,那要用到钩子了 众位,我对不起大家了,我的问题 是这样的“如何在C#里的Button的Text属性实现这样的效果: 确定(F12)” 那在word里做一个下划线的然后在复制但Button.Text里吧 this.button1.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 试试把按钮的Text属性值:&F12 应该这样就可以了吧!!Button.Text=&F12; 哦!!刚刚没有看清楼主的要求:呵呵,要改一下啊!Button.Text=确定(&F12)这样就会又下划线了!! 哦!!刚刚没有看清楼主的要求:呵呵,要改一下啊! Button.Text=确定(F&12)这样就会又下划线了!! 给你个类:using System;using System.Runtime.InteropServices;namespace SystemHotKey{ public delegate void HotkeyEventHandler(int HotKeyID); public class Hotkey : System.Windows.Forms.IMessageFilter { System.Collections.Hashtable keyIDs = new System.Collections.Hashtable(); IntPtr hWnd; public event HotkeyEventHandler OnHotkey; public enum KeyFlags { MOD_NONE=0x0, MOD_ALT = 0x1, MOD_CONTROL = 0x2, MOD_SHIFT = 0x4, MOD_WIN = 0x8 } [DllImport("user32.dll")] public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); [DllImport("user32.dll")] public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id); [DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); [DllImport("kernel32.dll")] public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); public Hotkey(IntPtr hWnd) { this.hWnd = hWnd; System.Windows.Forms.Application.AddMessageFilter(this); } public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags) { UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString()); RegisterHotKey((IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key); keyIDs.Add(hotkeyid, hotkeyid); return (int)hotkeyid; } public void UnregisterHotkeys() { System.Windows.Forms.Application.RemoveMessageFilter(this); foreach (UInt32 key in keyIDs.Values) { UnregisterHotKey(hWnd, key); GlobalDeleteAtom(key); } } public bool PreFilterMessage(ref System.Windows.Forms.Message m) { if (m.Msg == 0x312) { if (OnHotkey != null) { foreach (UInt32 key in keyIDs.Values) { if ((UInt32)m.WParam == key) { OnHotkey((int)m.WParam); return true; } } } } return false; } }}调用实例: Hotkey hotkey; hotkey = new Hotkey(this.Handle); Hotkey1 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.F12, Hotkey.KeyFlags.MOD_NONE); hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey); public void OnHotkey(int HotkeyID) { if (HotkeyID == Hotkey1) {this.button1_Click(sender, e); } Button.Text=&F12;这种等式只能实现 确定(F12)” 我要的是确定(F12) 呵呵,首先谢谢帮忙当是要看清,Button.Text=(&F12);这种等式只能实现 确定(F12)” 我要的是确定(F12) 我要实现 的就是那个F12中12下面的下划线 1、GDI画上去;2、继续UP;3、考虑用F1-9替代。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == Keys.Left) { this.button3.PerformClick(); //this.btnTempTest.PerformClick(); } if (keyData == Keys.Right) { this.button2.PerformClick(); } return base.ProcessCmdKey(ref msg, keyData); } 確定(F&12)呵呵,以假亂真吧,這樣一眼看上去沒有多大區別 求一个二维数组查询方法 做个web版的类似Excel的分数录入表,详细如下 在c#中如何实现点一个按钮就弹出一个datetimepicker? 注册COM+组件时出错了,代码如下,大虾们,解决下啊!多谢 新手急求..帮帮忙.. 关于配置IIS错误 急急急,想挑台能跑.net的二手笔记本.请大家帮选择一下! 关于内存共享数据的问题 关于C# 连接Oracle的查询数据不存数据库在问题 求教如何将一个网址关联到listitem呢 c#怎样实现类似Runas命令的代码啊! MSN 源代码火热下载
{
if (keyData == Keys.Left)
{
this.button3.PerformClick();
//this.btnTempTest.PerformClick();
}
if (keyData == Keys.Right)
{
this.button2.PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
} 如上,button3,button2的热键分别是方向键中的左和右。当然也可以设为f1,f2,会车键等等。字母?当然更没有问题了。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.F12)
{
button1_Click(null, null);
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
这样你的按钮就可以响应F12键的点击了!
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定(Enter)" />
</form>回车
<script language="javascript" for="document" event="onkeydown">if (event.keyCode == 13)
{
document.form1.Button1.click();
}
</script>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定(F12)" />
</form><script language="javascript" for="document" event="onkeydown">if (event.keyCode == 123)
{
document.form1.Button1.click();
}
</script>
方法一: 在button的text属性中输入&f,这样alt+f或者直接按f就可以 响应相应的button的click事件,f后的字母不做计算。但是这样做有一个缺点,就是只能定义字母热键,像f1,方向键,会车键等等都不能定义。而且button的text显示时,带着这个字母。这样就给我们带来麻烦,尤其是如果输入汉语时,还得带着个英文字母。不过倒是可以提醒用户哪个键是热键,呵呵。 方法二: 下面是代码,很简单的。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Left)
{
this.button3.PerformClick();
//this.btnTempTest.PerformClick();
}
if (keyData == Keys.Right)
{
this.button2.PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
} 如上,button3,button2的热键分别是方向键中的左和右。当然也可以设为f1,f2,会车键等等。字母?当然更没有问题了。 楼上的完全正解!!
我的问题 是这样的
“如何在C#里的Button的Text属性实现这样的效果:
确定(F12)”
然后在复制但Button.Text里吧
应该这样就可以了吧!!
Button.Text=&F12;
Button.Text=确定(&F12)这样就会又下划线了!!
Button.Text=确定(F&12)这样就会又下划线了!!
using System.Runtime.InteropServices;namespace SystemHotKey
{
public delegate void HotkeyEventHandler(int HotKeyID); public class Hotkey : System.Windows.Forms.IMessageFilter
{
System.Collections.Hashtable keyIDs = new System.Collections.Hashtable();
IntPtr hWnd; public event HotkeyEventHandler OnHotkey; public enum KeyFlags
{
MOD_NONE=0x0,
MOD_ALT = 0x1,
MOD_CONTROL = 0x2,
MOD_SHIFT = 0x4,
MOD_WIN = 0x8
}
[DllImport("user32.dll")]
public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); [DllImport("user32.dll")]
public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id); [DllImport("kernel32.dll")]
public static extern UInt32 GlobalAddAtom(String lpString); [DllImport("kernel32.dll")]
public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); public Hotkey(IntPtr hWnd)
{
this.hWnd = hWnd;
System.Windows.Forms.Application.AddMessageFilter(this);
} public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags)
{
UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString());
RegisterHotKey((IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key);
keyIDs.Add(hotkeyid, hotkeyid);
return (int)hotkeyid;
} public void UnregisterHotkeys()
{
System.Windows.Forms.Application.RemoveMessageFilter(this);
foreach (UInt32 key in keyIDs.Values)
{
UnregisterHotKey(hWnd, key);
GlobalDeleteAtom(key);
}
} public bool PreFilterMessage(ref System.Windows.Forms.Message m)
{
if (m.Msg == 0x312)
{
if (OnHotkey != null)
{
foreach (UInt32 key in keyIDs.Values)
{
if ((UInt32)m.WParam == key)
{
OnHotkey((int)m.WParam);
return true;
}
}
}
}
return false;
}
}
}
调用实例: Hotkey hotkey;
hotkey = new Hotkey(this.Handle);
Hotkey1 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.F12, Hotkey.KeyFlags.MOD_NONE);
hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey);
public void OnHotkey(int HotkeyID)
{
if (HotkeyID == Hotkey1)
{
this.button1_Click(sender, e);
}
2、继续UP;
3、考虑用F1-9替代。
{
if (keyData == Keys.Left)
{
this.button3.PerformClick();
//this.btnTempTest.PerformClick();
}
if (keyData == Keys.Right)
{
this.button2.PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
}
呵呵,以假亂真吧,這樣一眼看上去沒有多大區別