C# 如何仅使用一个按钮进行此操作?
好的,我正在尝试练习我的windows窗体技能,我一直在想一件简单的事情,比如制作一个显示“显示消息”的按钮,当你点击它时,它会使一个不可见的标签可见,上面写着“嘿,伙计”,按钮的文本应该改为“隐藏消息” 单击时,标签应再次不可见。我试着用if语句做了一段时间,但没有真正弄明白,所以我只使用了两个按钮,这使它简单了一百万倍。我只是在想,我怎么能只用一个按钮呢 我的代码:C# 如何仅使用一个按钮进行此操作?,c#,.net,button,C#,.net,Button,好的,我正在尝试练习我的windows窗体技能,我一直在想一件简单的事情,比如制作一个显示“显示消息”的按钮,当你点击它时,它会使一个不可见的标签可见,上面写着“嘿,伙计”,按钮的文本应该改为“隐藏消息” 单击时,标签应再次不可见。我试着用if语句做了一段时间,但没有真正弄明白,所以我只使用了两个按钮,这使它简单了一百万倍。我只是在想,我怎么能只用一个按钮呢 我的代码: public partial class Form1 : Form { public Form1()
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void btnShow_Click(object sender, EventArgs e)
{
lblShow.Visible = true;
btnShow.Visible = false;
btnHide.Visible = true;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnHide_Click(object sender, EventArgs e)
{
lblShow.Visible = false;
btnShow.Visible = true;
btnHide.Visible = false;
}
}
}
可以使用一种方法进行重构以设置标签可见性,如下所示:
private void btnToggle_Click(object sender, EventArgs e)
{
lblShow.Visible = !lblShow.Visible;
btnToggle.Text = lblShow.Visible ? "Hide Message" : "Show Message";
}
使用VS Form Desiner,可以将label Visible属性设置为true,将按钮文本设置为nothing
在FormLoad事件中,调用方法来设置:
btnToggle_Click(this, null);
可以使用一种方法进行重构以设置标签可见性,如下所示:
private void btnToggle_Click(object sender, EventArgs e)
{
lblShow.Visible = !lblShow.Visible;
btnToggle.Text = lblShow.Visible ? "Hide Message" : "Show Message";
}
使用VS Form Desiner,可以将label Visible属性设置为true,将按钮文本设置为nothing
在FormLoad事件中,调用方法来设置:
btnToggle_Click(this, null);
您可以向类中添加bool,并在单击按钮时更改bool
bool showLabel = true;
private void btnToggle_Click(object sender, EventArgs e)
{
if (showLabel)
{
lblShow.Visible = true;
}
else
{
lblShow.Visible = false;
}
showLabel = !showLabel;
}
您可以向类中添加bool,并在单击按钮时更改bool
bool showLabel = true;
private void btnToggle_Click(object sender, EventArgs e)
{
if (showLabel)
{
lblShow.Visible = true;
}
else
{
lblShow.Visible = false;
}
showLabel = !showLabel;
}
我建议保留一个状态变量,并根据状态变量的值更新表单。这是一种灵活的模式,您可以适应多个状态,这意味着您可以拥有产生不同结果的按钮组合 试试这个:
public partial class Form1 : Form
{
public enum FormState
{
MessageHidden,
MessageVisible,
Default = MessageHidden
}
FormState state = FormState.Default;
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
UpdateUI();
}
protected void UpdateUI()
{
switch (state)
{
case FormState.MessageHidden:
label1.Visible = false;
button1.Text = "Show Message";
break;
case FormState.MessageVisible:
label1.Visible = true;
button1.Text = "Hide Message";
break;
default:
throw new NotImplementedException();
}
}
private void button1_Click(object sender, EventArgs e)
{
switch (state)
{
case FormState.MessageHidden:
state = FormState.MessageVisible;
break;
case FormState.MessageVisible:
state = FormState.MessageHidden;
break;
default:
throw new NotImplementedException();
}
UpdateUI();
}
}
示例屏幕截图
FormState.MessageHidden
FormState.MessageVisible
我建议保留一个状态变量,并根据状态变量的值更新表单。这是一种灵活的模式,您可以适应多个状态,这意味着您可以拥有产生不同结果的按钮组合 试试这个:
public partial class Form1 : Form
{
public enum FormState
{
MessageHidden,
MessageVisible,
Default = MessageHidden
}
FormState state = FormState.Default;
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
UpdateUI();
}
protected void UpdateUI()
{
switch (state)
{
case FormState.MessageHidden:
label1.Visible = false;
button1.Text = "Show Message";
break;
case FormState.MessageVisible:
label1.Visible = true;
button1.Text = "Hide Message";
break;
default:
throw new NotImplementedException();
}
}
private void button1_Click(object sender, EventArgs e)
{
switch (state)
{
case FormState.MessageHidden:
state = FormState.MessageVisible;
break;
case FormState.MessageVisible:
state = FormState.MessageHidden;
break;
default:
throw new NotImplementedException();
}
UpdateUI();
}
}
示例屏幕截图
FormState.MessageHidden
FormState.MessageVisible
这只需两行代码即可完成:
private void btnToggle_Click(object sender, EventArgs e)
{
lblShow.Visible = !lblShow.Visible;
btnToggle.Text = lblShow.Visible ? "Hide Message" : "Show Message";
}
从技术上讲,它可以在一行中完成,但我认为它的可读性较差:
btnToggle.Text = (lblShow.Visible = !lblShow.Visible) ? "Hide Message" : "Show Message";
这只需两行代码即可完成:
private void btnToggle_Click(object sender, EventArgs e)
{
lblShow.Visible = !lblShow.Visible;
btnToggle.Text = lblShow.Visible ? "Hide Message" : "Show Message";
}
从技术上讲,它可以在一行中完成,但我认为它的可读性较差:
btnToggle.Text = (lblShow.Visible = !lblShow.Visible) ? "Hide Message" : "Show Message";
向类中添加bool变量并按如下方式切换值:向类中添加bool变量并按如下方式切换值: