根据之前的动作确定按钮功能
本文关键字:按钮 功能 | 更新日期: 2023-09-27 18:10:27
我有一个带有四个面板的Win Form,其中每个面板只能单独看到,就好像它们是独立的窗体一样,所以我创建了一个函数来控制它。
public void panelView(int pw)
{
if (pw == 1)
{
panelMenu.Visible == true; /*panelMenu - this is the main menu*/
panel2.Visible == false; /*panel2 - has a textBox and an "OK" button*/
panel3.Visible == false; /*panel3 - is where you see a product details*/
panel4.Visible == false; /*panel4 - is where you see products within a order*/
}
if (pw == 2)
{
panelMenu.Visible == false;
panel2.Visible == true;
panel3.Visible == false;
panel4.Visible == false;
}
if (pw == 3)
{
panelMenu.Visible == false;
panel2.Visible == false;
panel3.Visible == true;
panel4.Visible == false;
}
if (pw == 4)
{
panelMenu.Visible == false;
panel2.Visible == false;
panel3.Visible == false;
panel4.Visible == true;
}
}
private void btnCheck_Click(object sender, EventArgs e)
{
panelView(2);
}
private void btnOrder_Click(object sender, EventArgs e)
{
panelView(2);
}
所以当我点击"btnCheck"时,它会转到"panel2",在那里我可以输入产品代码,然后我按"OK",这将向服务器发送一条消息,请求该特定产品的产品详细信息,并在"panel3"上显示所有产品详细信息。
如果我决定检查订单中的项目,而不是按"btnCheck",我会按"btnOrder",这也会导致"panel2",我将输入订单代码,但当我按"OK",这一次我想要它有一个不同的功能,而不是它请求服务器输入"panel2"的代码的产品详细信息,它会请求在订单中的所有项目对应于"panel2"上输入的订单代码。那么该信息将显示在"panel4"上。
我只是不知道如何让"panel2"知道我点击了"panelMenu",所以"OK"按钮可以选择文本框。输入文本并执行在"panelMenu"中选择的任务。帮助吗?
一种可能的解决方案是向panelView方法传递一个额外的参数,该参数指示您希望特定面板显示的状态。如果面板2只有两种可能的状态,这可以是int或boolean,但如果最终每个面板有多个状态,你最好定义某种状态枚举。
例如:public void panelView(int pw, int state)
{
switch (pw)
{
case 1:
// stuff
break;
case 2:
if (state == 1) // Check
{
// check setup code
}
else // Order
{
// order setup code
}
break;
case 3:
// stuff
break;
// etc. etc.
}
}
所以,当从btnCheck调用时你可以这样做:
panelView(2, 1);
. .and when from btnOrder:
panelView(2, 2);
我强烈建议你让状态更容易读,但如果你不打算使用枚举也许你可以定义一些常量,让你传递的东西更容易读:
int OrderState = 2;
int CheckState = 1;
panelView(2, OrderState)
如果你在面板上有公共属性,你可以设置标志,然后根据指定的状态控制它们的行为