English 中文(简体)
C#Windows formfire Keypess
原标题:C# Windows form firing Keypess
  • 时间:2011-10-24 10:45:18
  •  标签:
  • c#
  • winforms

我正试图让Cancelutton活动当用户在形式上把Eois钥匙强加于任何地方时发生火灾。

我已尝试过几种方法,但就形式举行的主要活动并不希望火灾。

我的法典是:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CLT
{
    public partial class UnallocatedReceipts : UserControl
    {
        #region Windows Forms Designer


        private void InitializeComponent()
        {
        }

        #endregion

        //Constructor that Initializes the Form
        public UnallocatedReceipts()
        {
            InitializeComponent();
        }

        BLLService ws = new BLLService();

        //Set the properties and Datasets used in the form
        DataSet banks = new DataSet();

        public String ClientName { get; set; }
        public Int32 CompanyCode { get; set; }
        public Int32 UserLevel { get; set; }
        public Int32 BranchCode { get; set; }
        public Int32 UserCode { get; set; }


        private void UnallocatedReceipts_Load(object sender, EventArgs e)
        {
            txtClientNumber.Focus();
        }


        //Populates the Client Info Grid
        private void PopulateGrid(Int32 clientNumber)
        {
            datPortfolio.DataSource = ws.PortfolioSearch(clientNumber.ToString(), CompanyCode, UserLevel, BranchCode).Tables[0];
        }

        //Gets the Client information and sets the Client Name Label to the selected client
        private void GetClientInfo()
        {
            DataRow dr = ws.GetClient(txtClientNumber.Text, 0, 9).Tables[0].Rows[0];
            lblClientName.Text = dr["g"].ToString() + " " + dr["f"].ToString();
            lblClientName.Visible = true;
            lblCltName.Visible = true;
        }

        /*Method that runs when the search button is clicked, method calls Validate Client Number that checks 
        if the Client Number that was entered is a valid number*/
        private void btnSearch_Click(object sender, EventArgs e)
        {
            Cursor.Current = Cursors.WaitCursor;

            datPortfolio.DataSource = null;

            if (ValidClientNumber())
            {
                Cursor.Current = Cursors.WaitCursor;

                GetClientInfo();
                PopulateGrid(Convert.ToInt32(txtClientNumber.Text));
                //ClientExisting nc = new ClientExisting(ClientName, LoadClient, EnterFromBusiness);
                datPortfolio.Focus(); 
            }            
        }


        //Retrieves the Bank Name and Bank Code
        private void GetBanks()
        {
            banks = ws.QBankGroupsForBD();

            DataView dvBank = new DataView(banks.Tables[0]);
            cboBankAccount.DataSource = dvBank;
            cboBankAccount.ValueMember = banks.Tables[0].Columns[0].ColumnName;
            cboBankAccount.DisplayMember = banks.Tables[0].Columns[1].ColumnName;
            cboBankAccount.Enabled = true;
        }

        //Method to clear the form when Cancel button is clicked and also when Receipt has been inserted
        private void ClearForm()
        {
            txtClientNumber.Text = "";
            lblClientName.Visible = false;
            lblCltName.Visible = false;
            lblCltName.Text = "";
            datPortfolio.DataSource = null;
            txtAccountNumber.Text = "";
            txtAccountNumber.ReadOnly = true;
            dtpActionDate.Enabled = false;
            dtpActionDate.Value = DateTime.Today;
            txtDescription.Text = "";
            txtDescription.ReadOnly = true;
            txtAmount.Text = "";
            txtAmount.ReadOnly = true;
            cboBankAccount.DataSource = null;
            cboBankAccount.Enabled = false;
            ActionDate = DateTime.Today;
        }


        //Method that validates the entries that was made in the form when the save button is clicked
        private bool ValidateEntries()
        {
            decimal value;
            bool isDecimal = decimal.TryParse(txtAmount.Text, out value);

            if (ActionDate > DateTime.Today)
            {
                MessageBox.Show("Action Date must be today or in the past");
                dtpActionDate.Focus();
                return false;
            }
            else if(txtDescription.Text == "")
            {
                MessageBox.Show("Please complete the Description");
                txtDescription.Focus();
                return false;
            }
            else if (isDecimal == false)
            {
                MessageBox.Show("Please enter a valid decimal");
                txtAmount.Focus();
                return false;
            }
            else
            {
                return true;
            }
        }

        //Method that calls the store proc to insert the Receipts in the Database
        private void InsertUnAllocatedReceipts()
        {

            try
            {
                ws.InsertUnAllocatedReceipts(
                    int.Parse(txtClientNumber.Text),
                    int.Parse(txtAccountNumber.Text),
                    ActionDate,
                    txtDescription.Text,
                    decimal.Parse(txtAmount.Text),
                    Convert.ToInt32(UserCode),
                    int.Parse(cboBankAccount.SelectedValue.ToString())
                    );
            }
            catch (Exception ex)
            {
                 MessageBox.Show("Please contact your System Administrator!

Detailed error follows: " + ex.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void datPortfolio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter) //If enter is pressed
            {
                LoadReceiptInformation();
            }
        }

        //Loads the Receipt information that needs to be completed in order to save the receipt
        private void LoadReceiptInformation()
        {
            txtAccountNumber.Text = datPortfolio[datPortfolio.CurrentRowIndex, 2].ToString();
            dtpActionDate.Enabled = true;
            txtAmount.Enabled = true;
            txtDescription.Enabled = true;
            GetBanks();
            dtpActionDate.Focus();
        }

        private void datPortfolio_DoubleClick(object sender, EventArgs e)
        {
            LoadReceiptInformation();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            ClearForm();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (ValidateEntries())
            {
                InsertUnAllocatedReceipts();
                MessageBox.Show("Your Unallocated Receipt has been Inserted");
                ClearForm();
            }
        }

        //Fires the Search client click event that loads the datagrid when enter is pressed
        private void txtClientNumber_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnSearch.PerformClick();
                e.Handled = true;
            }
        }



        private void cboBankAccount_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                btnSave.PerformClick();
                e.Handled = true;
            }
        }


    }
}

如果有人能协助我,我将不胜感激。

问题回答

超越进程 处理用户控制中的关键事件:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    // 0x100 is WM_KEYDOWN
    if (msg.Msg == 0x100 && keyData == Keys.Escape)
    {
        //
        // call your cancel method here
        //

        // return true if you have handled the key press
        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}
this.CancelButton = btnCancel;

btnCancel是你取消的纽芬兰。

Set Form.KeyPreview=true 并处理KeyDown 活动或设置<代码>CancelButton=ButtonID。

private void MyForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    if((Keys) e.KeyValue == Keys.Escape) 
        //this.Close(); or whatever your cancel action
}

缩略语

KeyPress event don t fire if you press some system keys. Use KeyDown instead:

private void myControl_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Escape)
        {
            btnSave.PerformClick();
            e.Handled = true;
        }
    }




相关问题
Bring window to foreground after Mutex fails

I was wondering if someone can tell me what would be the best way to bring my application to the foreground if a mutex was not able to be created for a new instance. E.g.: Application X is running ...

How to start WinForm app minimized to tray?

I ve successfully created an app that minimizes to the tray using a NotifyIcon. When the form is manually closed it is successfully hidden from the desktop, taskbar, and alt-tab. The problem occurs ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

Handle DataTable.DataRow cell change event

I have a DataTable that has several DataColumns and DataRow. Now i would like to handle an event when cell of this DataRow is changed. How to do this in c#?

Apparent Memory Leak in DataGridView

How do you force a DataGridView to release its reference to a bound DataSet? We have a rather large dataset being displayed in a DataGridView and noticed that resources were not being freed after the ...

ALT Key Shortcuts Hidden

I am using VS2008 and creating forms. By default, the underscore of the character in a textbox when using an ampersand is not shown when I run the application. ex. "&Goto Here" is not ...

WPF-XAML window in Winforms Application

I have a Winforms application coded in VS C# 2008 and want to insert a WPF window into the window pane of Winforms application. Could you explain me how this is done.

热门标签