繁体   English   中英

C#检查标签是否包含字符串

[英]c# check label if it contains a string

我正在尝试对不同的“动作”进行按钮。 当我第一次单击时,您应该看到桌面名称,第二次单击应将其删除。 但是,我的第二个代码在我单击的第一刻出现,我该怎么办?

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        lbUsername.Text = "Username: Hallo," + userName;

        if (lbUsername.Text.Contains(userName))
        {
            lbUsername.Text = "klik op de knop, dokus.";
        }

将其更改为:

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

if (lbUsername.Text.Contains(userName))
{
    lbUsername.Text = "klik op de knop, dokus.";
}
else
{
    lbUsername.Text = "Username: Hallo," + userName;
}

应用于标签文本的更改将立即传播。

您的lblUsername.Text分配都将始终执行,因为if条件将始终评估为true。

而是尝试这个。

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
if (lbUsername.Text.Contains(userName))
{
    lbUsername.Text = "klik op de knop, dokus.";
}
else
{
    lbUsername.Text = "Username: Hallo," + userName;
}

还是使用条件运算符 ?:

bool hasUserName = lbUsername.Text.Contains(userName))
lbUsername.Text =  hasUserName ? "klik op de knop, dokus." : "Username: Hallo," + userName;

编辑:

根据dotnetFiddle 链接上发布的代码,您应该这样做。 在Form_Load事件上分配lblUsername的初始值。 在按钮上单击,您始终可以分配用户名文本

    private void Form1_Load(object sender, EventArgs e)
    {
        //THis will only be assigned when the Form is loaded.
        lbUsername.Text = "klik op de knop, dokus.";
    }

    private void btnMagic_Click(object sender, EventArgs e)
    {
        //On Every button click this will be executed.
        string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
        lbUsername.Text = "Username: Hallo," + userName;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM