c#检查标签,如果它包含一个字符串
问题描述:
我试图做一个按钮以不同'行动'。 当我第一次点击你应该看到桌面名称,第二次点击应该删除这个。 但我的第二个代码显示了我第一次点击,我做错了什么?c#检查标签,如果它包含一个字符串
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;
}
,或者如果您使用的是Conditional Operator:
bool hasUserName = lbUsername.Text.Contains(userName))
lbUsername.Text = hasUserName ? "klik op de knop, dokus." : "Username: Hallo," + userName;
编辑:
基于贴在dotnetFiddle link的代码,你应该这样做。在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;
}
因为根据您的代码'lbUsername.Text'始终包含'userName'。所以第二个'lbUsername.Text'总是覆盖第一个。 –
请用一些例子说明你想要达到的功能 – user3598756