菜单项 - 按钮 - 以及如何使它们在 C#/MySql POS 中交互
Menu items -buttons- and how to make them interact in a C#/MySql POS
希望你们到目前为止都过得愉快。
我一直在 CSharp/MySql 上开发一个 POS 应用程序,现在我对如何管理按钮事件感到很困惑(即,到目前为止我的想法是,如果服务员点击某个table号码后点击某个产品,然后这将生成一个插入数据库供以后查询,并带有一个标志,表示支票已打开)...
到目前为止的原始编码(我仍然需要调整按钮名称和功能,但第一个按钮点击案例描述了我正在尝试实现的想法):
String product = string.Empty;
String price = string.Empty;
Double total = 0.0;
string operand1 = string.Empty;
string operand2 = string.Empty;
string result;
char operation;
public LaCarta()
{
InitializeComponent();
displayTime();
}
private void LaCarta_Load(object sender, EventArgs e)
{
CoronaClara.Click += new EventHandler(btn_Click);
CoronaLight.Click += new EventHandler(btn_Click);
CoronaObscura.Click += new EventHandler(btn_Click);
Refresco.Click += new EventHandler(btn_Click);
NaranjadaGde.Click += new EventHandler(btn_Click);
NaranjadaCh.Click += new EventHandler(btn_Click);
LimonadaGde.Click += new EventHandler(btn_Click);
LimonadaCh.Click += new EventHandler(btn_Click);
HorchataGde.Click += new EventHandler(btn_Click);
HorchataCh.Click += new EventHandler(btn_Click);
AguaDePepinoGde.Click += new EventHandler(btn_Click);
NaipeCorazon.Click += new EventHandler(btn_Click);
NaipeDiamante.Click += new EventHandler(btn_Click);
NaipeEspada.Click += new EventHandler(btn_Click);
NaipeTrebol.Click += new EventHandler(btn_Click);
AguaDePepinoCh.Click += new EventHandler(btn_Click);
CervezaPacifico.Click += new EventHandler(btn_Click);
CervezaLeon.Click += new EventHandler(btn_Click);
CervezaVictoria.Click += new EventHandler(btn_Click);
NegraModelo.Click += new EventHandler(btn_Click);
CubetaDe20Pz.Click += new EventHandler(btn_Click);
CubetaDe10Pz.Click += new EventHandler(btn_Click);
CaguamaCorona.Click += new EventHandler(btn_Click);
JarraDeCheve.Click += new EventHandler(btn_Click);
LitroDeCheve.Click += new EventHandler(btn_Click);
MiniTarro.Click += new EventHandler(btn_Click);
MicheladaGde.Click += new EventHandler(btn_Click);
}
private void displayTime()
{
label21.Text = DateTime.Now.ToLongTimeString();
label22.Text = DateTime.Now.ToLongDateString();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
char open = 'Y';
int table = comboBox1.SelectedIndex;
MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");
//Int32.TryParse(comboBox1.SelectedValue.ToString(), out val);
try
{
string query = "SELECT * FROM check where table_id = '" + table + "' and open = '" + open + "'";
// dataGridView1.DataSource = getData(query);
}
catch (Exception)
{
MessageBox.Show("Error loading table");
}
finally {
mcon.Close();
}
}
void btn_Click(object sender, EventArgs e)
{
try
{
Button btn = sender as Button;
MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");
mcon.Open();
switch (btn.Name)
{
case "CoronaClara":
product = "CoronaClara";
LaCuenta.Items.Add(product);
string select = "SELECT price FROM products where prodnom = '" + product + "';";
MySqlCommand cmd = new MySqlCommand(select, mcon);
object result = cmd.ExecuteScalar();
precio = Convert.ToString(result);
//precio = Convert.ToDouble(result);
LaCuenta.Items.Add(product + " " + "$" + price);
txtInput.Text += price;
break;
case "btnTwo":
//txtInput.Text += "2";
break;
case "btnThree":
//txtInput.Text += "3";
break;
case "btnFour":
//txtInput.Text += "4";
break;
case "btnFive":
//txtInput.Text += "5";
break;
case "btnSix":
//txtInput.Text += "6";
break;
case "btnSeven":
//txtInput.Text += "7";
break;
case "btnEight":
//txtInput.Text += "8";
break;
case "btnNine":
//txtInput.Text += "9";
break;
case "btnZero":
//txtInput.Text += "0";
break;
case "btnDot":
//if (!txtInput.Text.Contains("."))
// txtInput.Text += ".";
break;
}
}
catch (Exception ex)
{
MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details: " +
ex.Message);
}
}
private void bttn1_Click(object sender, EventArgs e)
{
txtInput.Text = operand1;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn2_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn3_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn4_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void btnEqual_Click(object sender, EventArgs e)
{
operand2 = txtInput.Text;
double opr1, opr2;
double.TryParse(operand1, out opr1);
double.TryParse(operand2, out opr2);
result = (opr1 * opr2).ToString();
txtInput.Text = result.ToString();
}
}
这基本上是我想要相互交互的元素:图像按钮、列表框、乘法器、网格视图,您可以从中 select 一些 table 或客户名称,以及总金额。
所以我的问题是:
你觉得我走的路对吗?
如何让这些按钮点击事件相互交互?
非常感谢您的宝贵时间。
我看到你的代码有很多缺陷!首先尝试在单个实用程序函数中重新组合数据库连接查询。这将减少代码冗余,相信我会大大简化您的生活。其次,我确信产品不仅仅是一个字符串。它包含名称、价格等...创建一个 class 产品并添加所有详细信息,这将允许您获取信息。更容易。最后,在 属性 面板的设计模式中有事件部分,单击它并为每个按钮将 Click 事件设置为 btn_Click。
如果我没看错的话,对于你的第二个问题,为产品创建一个class会对你有所帮助。
希望你们到目前为止都过得愉快。
我一直在 CSharp/MySql 上开发一个 POS 应用程序,现在我对如何管理按钮事件感到很困惑(即,到目前为止我的想法是,如果服务员点击某个table号码后点击某个产品,然后这将生成一个插入数据库供以后查询,并带有一个标志,表示支票已打开)...
到目前为止的原始编码(我仍然需要调整按钮名称和功能,但第一个按钮点击案例描述了我正在尝试实现的想法):
String product = string.Empty;
String price = string.Empty;
Double total = 0.0;
string operand1 = string.Empty;
string operand2 = string.Empty;
string result;
char operation;
public LaCarta()
{
InitializeComponent();
displayTime();
}
private void LaCarta_Load(object sender, EventArgs e)
{
CoronaClara.Click += new EventHandler(btn_Click);
CoronaLight.Click += new EventHandler(btn_Click);
CoronaObscura.Click += new EventHandler(btn_Click);
Refresco.Click += new EventHandler(btn_Click);
NaranjadaGde.Click += new EventHandler(btn_Click);
NaranjadaCh.Click += new EventHandler(btn_Click);
LimonadaGde.Click += new EventHandler(btn_Click);
LimonadaCh.Click += new EventHandler(btn_Click);
HorchataGde.Click += new EventHandler(btn_Click);
HorchataCh.Click += new EventHandler(btn_Click);
AguaDePepinoGde.Click += new EventHandler(btn_Click);
NaipeCorazon.Click += new EventHandler(btn_Click);
NaipeDiamante.Click += new EventHandler(btn_Click);
NaipeEspada.Click += new EventHandler(btn_Click);
NaipeTrebol.Click += new EventHandler(btn_Click);
AguaDePepinoCh.Click += new EventHandler(btn_Click);
CervezaPacifico.Click += new EventHandler(btn_Click);
CervezaLeon.Click += new EventHandler(btn_Click);
CervezaVictoria.Click += new EventHandler(btn_Click);
NegraModelo.Click += new EventHandler(btn_Click);
CubetaDe20Pz.Click += new EventHandler(btn_Click);
CubetaDe10Pz.Click += new EventHandler(btn_Click);
CaguamaCorona.Click += new EventHandler(btn_Click);
JarraDeCheve.Click += new EventHandler(btn_Click);
LitroDeCheve.Click += new EventHandler(btn_Click);
MiniTarro.Click += new EventHandler(btn_Click);
MicheladaGde.Click += new EventHandler(btn_Click);
}
private void displayTime()
{
label21.Text = DateTime.Now.ToLongTimeString();
label22.Text = DateTime.Now.ToLongDateString();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
char open = 'Y';
int table = comboBox1.SelectedIndex;
MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");
//Int32.TryParse(comboBox1.SelectedValue.ToString(), out val);
try
{
string query = "SELECT * FROM check where table_id = '" + table + "' and open = '" + open + "'";
// dataGridView1.DataSource = getData(query);
}
catch (Exception)
{
MessageBox.Show("Error loading table");
}
finally {
mcon.Close();
}
}
void btn_Click(object sender, EventArgs e)
{
try
{
Button btn = sender as Button;
MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");
mcon.Open();
switch (btn.Name)
{
case "CoronaClara":
product = "CoronaClara";
LaCuenta.Items.Add(product);
string select = "SELECT price FROM products where prodnom = '" + product + "';";
MySqlCommand cmd = new MySqlCommand(select, mcon);
object result = cmd.ExecuteScalar();
precio = Convert.ToString(result);
//precio = Convert.ToDouble(result);
LaCuenta.Items.Add(product + " " + "$" + price);
txtInput.Text += price;
break;
case "btnTwo":
//txtInput.Text += "2";
break;
case "btnThree":
//txtInput.Text += "3";
break;
case "btnFour":
//txtInput.Text += "4";
break;
case "btnFive":
//txtInput.Text += "5";
break;
case "btnSix":
//txtInput.Text += "6";
break;
case "btnSeven":
//txtInput.Text += "7";
break;
case "btnEight":
//txtInput.Text += "8";
break;
case "btnNine":
//txtInput.Text += "9";
break;
case "btnZero":
//txtInput.Text += "0";
break;
case "btnDot":
//if (!txtInput.Text.Contains("."))
// txtInput.Text += ".";
break;
}
}
catch (Exception ex)
{
MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details: " +
ex.Message);
}
}
private void bttn1_Click(object sender, EventArgs e)
{
txtInput.Text = operand1;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn2_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn3_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void bttn4_Click(object sender, EventArgs e)
{
operand1 = txtInput.Text;
operation = '*';
txtInput.Text = string.Empty;
}
private void btnEqual_Click(object sender, EventArgs e)
{
operand2 = txtInput.Text;
double opr1, opr2;
double.TryParse(operand1, out opr1);
double.TryParse(operand2, out opr2);
result = (opr1 * opr2).ToString();
txtInput.Text = result.ToString();
}
}
这基本上是我想要相互交互的元素:图像按钮、列表框、乘法器、网格视图,您可以从中 select 一些 table 或客户名称,以及总金额。
所以我的问题是:
你觉得我走的路对吗?
如何让这些按钮点击事件相互交互?
非常感谢您的宝贵时间。
我看到你的代码有很多缺陷!首先尝试在单个实用程序函数中重新组合数据库连接查询。这将减少代码冗余,相信我会大大简化您的生活。其次,我确信产品不仅仅是一个字符串。它包含名称、价格等...创建一个 class 产品并添加所有详细信息,这将允许您获取信息。更容易。最后,在 属性 面板的设计模式中有事件部分,单击它并为每个按钮将 Click 事件设置为 btn_Click。
如果我没看错的话,对于你的第二个问题,为产品创建一个class会对你有所帮助。