C# 在C中单击按钮后更改按钮事件#

C# 在C中单击按钮后更改按钮事件#,c#,button,text,click,C#,Button,Text,Click,我有一个表格可以导航网页和访问数据。它看起来像下面的东西 private void LoginButton_Click(object sender, EventArgs e) { if(LoginButton.Text == Login) { LoginButton.Text = "Logging in..."; .... ...

我有一个表格可以导航网页和访问数据。它看起来像下面的东西

 private void LoginButton_Click(object sender, EventArgs e)
    {
        if(LoginButton.Text == Login)
        {
                LoginButton.Text = "Logging in...";
                ....
                ...
                Login process goes here...
                ..
                if(Login Successed)
                {
                    LoginButton.Text ="Download";
                }
                else
                {
                    LoginButton.Text = "Login";
                }
        }
        else if(LoginButton.Text==Download)
        {
            Download data here...
        }
    }
同一个按钮(也是同一个事件),执行两个进程,看起来像带标签的不同事件。 1) 如果有任何问题,比如运行效率低下? 2) 有没有其他方法可以像不同的标志方案一样实现这一点? 3) 对于同一个按钮,有什么方法可以通过多个事件来实现相同的想法


谢谢。

用文本作为状态通常是个坏主意。理想情况下,您应该有两个按钮,可以触发不同的事件,并在MVP模式中向演示者发出主逻辑。

通常使用文本作为状态是个坏主意。理想情况下,您应该有两个按钮来触发不同的事件,并在MVP模式中向演示者调用主逻辑。

使用控制容器,如Panel和GroupBox。您可以为处于不同状态的控件设置一大堆面板。

使用诸如Panel和GroupBox之类的控件容器。你可以在不同的州拥有一大堆控制面板。

就像丹尼尔·a·怀特说的那样 我有两个按钮

可能在某些事件上,如oncreate/onload do check..jst伪代码

 if process is login then
 do 
   //then showLoginButton
    btnlogin.visible

 else
     //download
    btndonload.visible
在登录按钮内

        if(Login Successed)
            {
                 btndonload.visible
            }
            else
            {
                LoginButton.Text = "Login";
            }
使用两个按钮可能比单按钮更好。而且更干净,就像Daniel A.White说的那样 我有两个按钮

可能在某些事件上,如oncreate/onload do check..jst伪代码

 if process is login then
 do 
   //then showLoginButton
    btnlogin.visible

 else
     //download
    btndonload.visible
在登录按钮内

        if(Login Successed)
            {
                 btndonload.visible
            }
            else
            {
                LoginButton.Text = "Login";
            }
使用两个按钮可能比使用单个按钮更好。如果出现诸如运行效率低下之类的问题,还可以使用清洁器

按钮点击在人类时间运行。您可以在不给用户带来不便的情况下烧掉5亿条cpu指令

2) 有没有其他方法可以像不同的标志方案一样实现这一点

使用按钮的文本属性是脆弱的,当有人决定更改按钮文本或将应用程序本地化为其他语言时,您的代码将中断。在你们班上,一个简单的私人布尔域要好得多

3) 对于同一个按钮,有什么方法可以通过多个事件来实现相同的想法

不,你当然可以使用两个按钮,一个放在另一个上面,其中一个总是隐藏的。使本地化更加简单,您将免费获得bool字段。

1)是否存在诸如运行效率低下之类的问题

按钮点击在人类时间运行。您可以在不给用户带来不便的情况下烧掉5亿条cpu指令

2) 有没有其他方法可以像不同的标志方案一样实现这一点

使用按钮的文本属性是脆弱的,当有人决定更改按钮文本或将应用程序本地化为其他语言时,您的代码将中断。在你们班上,一个简单的私人布尔域要好得多

3) 对于同一个按钮,有什么方法可以通过多个事件来实现相同的想法


不,你当然可以使用两个按钮,一个放在另一个上面,其中一个总是隐藏的。使本地化更加简单,您将免费获得bool字段。

为鼠标单击编写自定义事件处理程序

为登录和下载编写单独的方法

将自定义事件处理程序注册到按钮单击事件

我假设有某种逻辑决定按钮文本应该是“下载”或“登录”。此时,当然要设置按钮文本,但也要注册相应的事件处理程序

这将允许您使用一个按钮执行任何操作

软件设计思想

  • 更容易扩展。我们不需要每做一件新事情都按另一个按钮
  • 关注点分离——例如,所有登录代码都在一个单独的方法中,该方法只处理登录内容
  • 变化被隔离并最小化。编写新的、独立的方法比在
    if-else
    结构中排列代码更不容易出错。因此,
    if-else
    结构保持简单易懂

为鼠标单击编写自定义事件处理程序

为登录和下载编写单独的方法

将自定义事件处理程序注册到按钮单击事件

我假设有某种逻辑决定按钮文本应该是“下载”或“登录”。此时,当然要设置按钮文本,但也要注册相应的事件处理程序

这将允许您使用一个按钮执行任何操作

软件设计思想

  • 更容易扩展。我们不需要每做一件新事情都按另一个按钮
  • 关注点分离——例如,所有登录代码都在一个单独的方法中,该方法只处理登录内容
  • 变化被隔离并最小化。编写新的、独立的方法比在
    if-else
    结构中排列代码更不容易出错。因此,
    if-else
    结构保持简单易懂

尝试使用case并查看…3)按钮的多个事件不好主意i thin(如果可能)您可以尝试以编程方式注册/取消注册事件处理程序。尝试使用case并查看…3)按钮的多个事件不好主意i thin(如果可能)您可以通过编程方式尝试注册/取消注册事件处理程序。添加额外的按钮不会增加执行期间的负载吗?当然可以。但是你又犯了同样的错误,你不知道这是否真的是个问题。从长远来看,最便宜的窗户是看不见的。就像你不用写的代码一样。谢谢你的想法。我将对此进行测试。添加一个额外的按钮不会增加执行期间的有效负载吗?当然可以。但是你又犯了同样的错误,你不知道这是否真的是个问题。从长远来看,最便宜的窗户是看不见的。就像你不用写的代码一样。谢谢你的想法。我来测试一下。谢谢你的伪代码。