C# Keydown 事件不起作用
C# Keydown event not working
我试图让应用程序在按下 ENTER 键后导航到 Web 浏览器组件中的某个 URL(条形码 reader 将数据输入条形码文本框并被编程为在每次扫描结束时添加 "ENTER")。然后条形码编号通过 URL 发送到服务器进行验证,结果显示在网络浏览器中。
最初阅读 Stack Overflow 后,我得出的结论是 this.KeyPreview
尚未设置 - 然而即使将其设置为 True 后它仍然不会。
我想要它做的就是当在 Form2 上的任何地方按下 ENTER 时,它应该将 WebBrowser
组件 URL 更改为 Barcode
文本框中包含的数据。
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;
namespace SUBWAY_deliverX_2017_POSlink
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.ActiveControl = Barcode;
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
private void button2_Click(object sender, EventArgs e)
{
}
private void Barcode_TextChanged(object sender, EventArgs e)
{
}
private void Barcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
webBrowser1.Navigate("https://10.0.0.142/deliverXPOSquery.php?barcode=" + Barcode.Text);
}
}
}
}
以及 Designer 文件:
namespace SUBWAY_deliverX_2017_POSlink
{
partial class Form2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
this.button1 = new System.Windows.Forms.Button();
this.Barcode = new System.Windows.Forms.TextBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.webBrowser1 = new System.Windows.Forms.WebBrowser();
this.button2 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.button1.Location = new System.Drawing.Point(177, 241);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(249, 79);
this.button1.TabIndex = 0;
this.button1.Text = "Return to SubShop";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Barcode
//
this.Barcode.BackColor = System.Drawing.SystemColors.Control;
this.Barcode.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.Barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Barcode.Location = new System.Drawing.Point(178, 323);
this.Barcode.Name = "Barcode";
this.Barcode.Size = new System.Drawing.Size(249, 24);
this.Barcode.TabIndex = 1;
this.Barcode.TextChanged += new System.EventHandler(this.Barcode_TextChanged);
//
// pictureBox1
//
this.pictureBox1.Image = global::SUBWAY_deliverX_2017_POSlink.Properties.Resources.delxstoreheader;
this.pictureBox1.Location = new System.Drawing.Point(0, -2);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(589, 102);
this.pictureBox1.TabIndex = 3;
this.pictureBox1.TabStop = false;
//
// webBrowser1
//
this.webBrowser1.Location = new System.Drawing.Point(12, 106);
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
this.webBrowser1.Name = "webBrowser1";
this.webBrowser1.Size = new System.Drawing.Size(563, 120);
this.webBrowser1.TabIndex = 4;
this.webBrowser1.Url = new System.Uri("https://10.0.0.142/deliverXPOSquery.php", System.UriKind.Absolute);
//
// button2
//
this.button2.Location = new System.Drawing.Point(471, 256);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 5;
this.button2.Text = "button2";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(587, 346);
this.ControlBox = false;
this.KeyPreview = true;
this.Controls.Add(this.button2);
this.Controls.Add(this.webBrowser1);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.Barcode);
this.Controls.Add(this.button1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximumSize = new System.Drawing.Size(603, 385);
this.MinimumSize = new System.Drawing.Size(603, 385);
this.Name = "Form2";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "deliverX 2017 - Order Validation";
this.TopMost = true;
this.Load += new System.EventHandler(this.Form2_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox Barcode;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.WebBrowser webBrowser1;
private System.Windows.Forms.Button button2;
}
}
在您的代码中:
this.Barcode.BackColor = System.Drawing.SystemColors.Control;
this.Barcode.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.Barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Barcode.Location = new System.Drawing.Point(178, 323);
this.Barcode.Name = "Barcode";
this.Barcode.Size = new System.Drawing.Size(249, 24);
this.Barcode.TabIndex = 1;
this.Barcode.TextChanged += new System.EventHandler(this.Barcode_TextChanged);
您从未将 keydown 代码链接到您认为已经链接到的控件。所以不会。
就我个人而言,在我自己的条码读取应用程序中,我使用了更改后的文本并找到符合规范的条码,然后自动提交它。但我的是用于磁带扫描的,因此他们可以扫描 250 多个磁带并且不想每次都按一个按钮
我试图让应用程序在按下 ENTER 键后导航到 Web 浏览器组件中的某个 URL(条形码 reader 将数据输入条形码文本框并被编程为在每次扫描结束时添加 "ENTER")。然后条形码编号通过 URL 发送到服务器进行验证,结果显示在网络浏览器中。
最初阅读 Stack Overflow 后,我得出的结论是 this.KeyPreview
尚未设置 - 然而即使将其设置为 True 后它仍然不会。
我想要它做的就是当在 Form2 上的任何地方按下 ENTER 时,它应该将 WebBrowser
组件 URL 更改为 Barcode
文本框中包含的数据。
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;
namespace SUBWAY_deliverX_2017_POSlink
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.ActiveControl = Barcode;
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
private void button2_Click(object sender, EventArgs e)
{
}
private void Barcode_TextChanged(object sender, EventArgs e)
{
}
private void Barcode_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
webBrowser1.Navigate("https://10.0.0.142/deliverXPOSquery.php?barcode=" + Barcode.Text);
}
}
}
}
以及 Designer 文件:
namespace SUBWAY_deliverX_2017_POSlink
{
partial class Form2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
this.button1 = new System.Windows.Forms.Button();
this.Barcode = new System.Windows.Forms.TextBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.webBrowser1 = new System.Windows.Forms.WebBrowser();
this.button2 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// button1
//
this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.button1.Location = new System.Drawing.Point(177, 241);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(249, 79);
this.button1.TabIndex = 0;
this.button1.Text = "Return to SubShop";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Barcode
//
this.Barcode.BackColor = System.Drawing.SystemColors.Control;
this.Barcode.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.Barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Barcode.Location = new System.Drawing.Point(178, 323);
this.Barcode.Name = "Barcode";
this.Barcode.Size = new System.Drawing.Size(249, 24);
this.Barcode.TabIndex = 1;
this.Barcode.TextChanged += new System.EventHandler(this.Barcode_TextChanged);
//
// pictureBox1
//
this.pictureBox1.Image = global::SUBWAY_deliverX_2017_POSlink.Properties.Resources.delxstoreheader;
this.pictureBox1.Location = new System.Drawing.Point(0, -2);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(589, 102);
this.pictureBox1.TabIndex = 3;
this.pictureBox1.TabStop = false;
//
// webBrowser1
//
this.webBrowser1.Location = new System.Drawing.Point(12, 106);
this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
this.webBrowser1.Name = "webBrowser1";
this.webBrowser1.Size = new System.Drawing.Size(563, 120);
this.webBrowser1.TabIndex = 4;
this.webBrowser1.Url = new System.Uri("https://10.0.0.142/deliverXPOSquery.php", System.UriKind.Absolute);
//
// button2
//
this.button2.Location = new System.Drawing.Point(471, 256);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 5;
this.button2.Text = "button2";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(587, 346);
this.ControlBox = false;
this.KeyPreview = true;
this.Controls.Add(this.button2);
this.Controls.Add(this.webBrowser1);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.Barcode);
this.Controls.Add(this.button1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximumSize = new System.Drawing.Size(603, 385);
this.MinimumSize = new System.Drawing.Size(603, 385);
this.Name = "Form2";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "deliverX 2017 - Order Validation";
this.TopMost = true;
this.Load += new System.EventHandler(this.Form2_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox Barcode;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.WebBrowser webBrowser1;
private System.Windows.Forms.Button button2;
}
}
在您的代码中:
this.Barcode.BackColor = System.Drawing.SystemColors.Control;
this.Barcode.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.Barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Barcode.Location = new System.Drawing.Point(178, 323);
this.Barcode.Name = "Barcode";
this.Barcode.Size = new System.Drawing.Size(249, 24);
this.Barcode.TabIndex = 1;
this.Barcode.TextChanged += new System.EventHandler(this.Barcode_TextChanged);
您从未将 keydown 代码链接到您认为已经链接到的控件。所以不会。
就我个人而言,在我自己的条码读取应用程序中,我使用了更改后的文本并找到符合规范的条码,然后自动提交它。但我的是用于磁带扫描的,因此他们可以扫描 250 多个磁带并且不想每次都按一个按钮