在 C# 中为按钮设置快捷键

本文关键字:设置 快捷键 按钮 | 更新日期: 2023-09-27 18:36:39

我有一个用 C# 制作的销售点程序按下提交按钮时,它提交销售并打印发票我想为它做一个快捷方式,所以当我按下键盘上的快捷键时它确实按钮工作

这是我的按钮代码:

private void btnCompleteSalesAndPrint_Click(object sender, EventArgs e)
{
    DialogResult result = MessageBox.Show("Do you want to Complete Sale and Print?'n'n -If you need any item [duplicate] (1 item  2 piece) 'n -Please Increase item Quantity 'n ----- by clicking + sign  ", "Yes or No", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
    if (result == DialogResult.Yes)
    {
        if (txtPaidAmount.Text == "")
        {
            MessageBox.Show("Sorry ! you have not enough product 'n  Please Purchase product or Increase Product Quantity");
            // detail_info go = new detail_info();
            // go.ShowDialog();
        }
        else
        {
            try
            {
                sales_item();
                //Save payment info into sales_payment table
                payment_item();
                // 5 % Rewards Point add to customer Account for total Payable amount 
                AddCredit();
                PrintPage mkc = new PrintPage();
                mkc.saleno = txtInvoice.Text;
                mkc.vat = txtVATRate.Text;
                mkc.dis = txtDiscountRate.Text;
                mkc.paidamt = txtPaidAmount.Text;
                mkc.subtotal = lblsubtotal.Text;
                mkc.ShowDialog();
                showincrement();
                ClearForm2();
            }
            catch (Exception exp)
            {
                MessageBox.Show(exp.Message);
            }
        }
    }
}

在 C# 中为按钮设置快捷键

如何在窗体上使用 KeyDown 事件?例如,假设快捷键是"E"。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.E)
    {
        btnCompleteSalesAndPrint_Click(sender, new EventArgs());
    }
}

但是,这实际上不适用于多个键,因此您可能希望使用允许您检查是否按下某个键的系统。假设"CTRL"+"E"是快捷方式。使用"PresentationCore"库访问"System.Windows.Input"命名空间。

using System.Windows.Input;
//[...]
private bool ControlPressed//Returns true if the left control button or the right control button is pressed. Returns false if neither are pressed.
{
    get
    {
       return Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);
    }
}
private bool E_Pressed//Boolean that returns true if "E" is pressed and false if it isn't.
{
    get
    {
        return Keyboard.IsKeyDown(Key.E);
    }
}

并定期检查是否按下了这些键。

public Form1()
{
    InitializeComponent();
    Timer timer = new Timer();//Create new instance of Timer.
    timer.Interval = 1;
    timer.Tick += new EventHandler(timer_Tick);//Set an eventhandler to occur after each 1000th of a second.
    timer.Enabled = true;
}
private void timer_Tick(object sender, EventArgs e)
{
    if (ControlPressed && E_Pressed)
    {
        btnCompleteSalesAndPrint_Click(sender, new EventArgs());
    }
}

Codf bflow:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Input;
namespace hmmmhmh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Timer timer = new Timer();
            timer.Interval = 1;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Enabled = true;
        }
        private void timer_Tick(object sender, EventArgs e)
        {
            if (Control_Pressed && F_Pressed)
            {
                button1_Click(sender, e);
            }
        }
        private bool Control_Pressed
        {
            get
            {
                return Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);
            }
        }
        private bool F_Pressed
        {
            get
            {
                return Keyboard.IsKeyDown(Key.E);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("hlhlh");
        }
    }
}