我正在尝试配置TextBox,以便在按ctrl+delete键时可以清除TextBox。
这是我的整个代码:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;
namespace pruebaMensajes
{
public partial class Providus : Form{
public Providus(){
InitializeComponent();
txtUsuario.MaxLength = 20;//max character
txtContrasena.MaxLength = 16;
txtContrasena.PasswordChar = '*';//type
}
private void Button1_Click(object sender, EventArgs e){//para el login
string usuario = txtUsuario.Text;
string contrasena = txtContrasena.Text;
SqlConnection con = new SqlConnection("stringChain");
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM usuariosProvidus WHERE usuario='" + usuario + "' AND contrasena='" + contrasena + "'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1"){
this.Hide();
new Inicio().Show();
} else{
MessageBox.Show("Wrong user o password.","Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Providus_Load(object sender, EventArgs e){ }
private void TxtContrasena_KeyPress_1(object sender, KeyPressEventArgs e){//manejar el enter para el login en contraseña
if ((int)e.KeyChar == (int)Keys.Enter){
string usuario = txtUsuario.Text;
string contrasena = txtContrasena.Text;
SqlConnection con = new SqlConnection("Data Source=PC-HELP;Initial Catalog=apiTiny;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM usuariosProvidus WHERE usuario='" + usuario + "' AND contrasena='" + contrasena + "'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1"){
this.Hide();
new Inicio().Show();
}else if(txtUsuario.Text==String.Empty){
lblMensaje.BackColor = Color.FromArgb(255, 0, 0);
lblMensaje.Text = "Wrong user.";
txtUsuario.Focus();
}else if (txtContrasena.Text == String.Empty){
lblMensaje.BackColor = Color.FromArgb(255, 0, 0);
lblMensaje.Text = "Wrong password.";
txtContrasena.Focus();
}
}
}
private void TxtUsuario_KeyPress(object sender, KeyPressEventArgs e){//enter para el txt usuario
if ((int)e.KeyChar == (int)Keys.Enter){
string usuario = txtUsuario.Text;
string contrasena = txtContrasena.Text;
SqlConnection con = new SqlConnection("Data Source=PC-HELP;Initial Catalog=apiTiny;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("SELECT COUNT(*) FROM usuariosProvidus WHERE usuario='" + usuario + "' AND contrasena='" + contrasena + "'", con);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1"){
this.Hide();
new Inicio().Show();
}
else if (txtUsuario.Text == String.Empty){
lblMensaje.BackColor = Color.FromArgb(255, 0, 0);
lblMensaje.Text = "Worng user.";
txtUsuario.Focus();
}
else if (txtContrasena.Text == String.Empty){
lblMensaje.BackColor = Color.FromArgb(255, 0, 0);
lblMensaje.Text = "Worng password.";
txtContrasena.Focus();
}
};
}
private void TxtUsuario_KeyDown(object sender, KeyEventArgs e){
if (e.KeyCode == Keys.Delete && e.Modifiers == Keys.ControlKey){
e.Handled = true;
txtUsuario.Text = "";
}
}
private void TxtContrasena_KeyDown(object sender, KeyEventArgs e){
if (e.KeyCode == Keys.Delete && e.Modifiers == Keys.Control){
e.Handled = true;
txtContrasena.Text = "";
}
}
}
}
有人知道我该怎么做吗?原因是当我按下按键时ctrl+delete这会添加一个字符而不是清除文本框。我使用keydown事件来实现这一点,但它对我不起作用
在gif中:
伴侣,您只是在使用错误的密钥,和/或在谈论错误的密钥。
尽管您将其称为“删除”,但您正在谈论Backspace键事件。
该删除键是一个不同的,将实际工作!
如果您确实想使用退格键,则还需要在代码中检查它:
if (e.Control && e.KeyCode == Keys.Back)
{
textBox1.Text = "";
e.Handled = true;
}
不幸的是,这将在文本框中保留最后一个0x7F
或DEL
ASCII字符。我还没有弄清楚如何彻底摆脱它:)
我建议您使用您的代码,然后按实 del按钮
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句