在WinForms(C#)应用程序中,我创建了一个语言菜单条和一个声音按钮,但我不知道如何使它们可切换。
我的意思是我希望声音按钮在我击中时停止声音&当我再次点击它并改变它的图标时播放声音? 同样,语言菜单,如何让它在第一次点击时用“Localizable”更改语言并将其文本更改为其他语言,然后在第二次点击时返回?
这是我的代码:
using System.Globalization;
using System.Threading;
namespace Project
{
public partial class Form2 : Form
{}
private void Menu_LanguageSwitch_Click (object sender, EventArgs e)
{
//Switch to EN - what's here?
{
CultureInfo ci = new CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form2));
res.ApplyResources(lbl_Status, "lbl_Status");
Menu_LanguageSwitch.Text = "Francais";
}
//Switch to French
{
CultureInfo ci = new CultureInfo("fr");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
System.ComponentModel.ComponentResourceManager res = new ComponentResourceManager(typeof(Form2));
res.ApplyResources(Menu_LanguageSwitch, "Menu_LanguageSwitch");
res.ApplyResources(label2, "label2");
res.ApplyResources(label3, "label3");
res.ApplyResources(label4, "label4");
res.ApplyResources(label5, "label5");
res.ApplyResources(label6, "label6");
res.ApplyResources(label7, "label7");
res.ApplyResources(label8, "label8");
res.ApplyResources(lbl_Status, "lbl_Status");
Menu_LanguageSwitch.Text = "Francais";
}
}
}
谢谢,请向初学者说清楚。我是“菜鸟”。
答案 0 :(得分:2)
您需要跟踪程序的当前状态,以便在按下按钮时对其进行检查。对于简单的标志(如“静音”),这可能只是一个布尔:
private bool isMuted = false;
private void onSoundClick(...)
{
if (isMuted)
{
//Do unmute kind of things
isMuted = false;
}
else
{
//Do mute kind of things
isMuted = true;
}
}
本地化逻辑将类似,但如果您希望它超过2种语言,则需要循环遍历列表/队列。
答案 1 :(得分:0)
简单的方法是使用表单范围变量 外化到表单 CultureInfo ci = new CultureInfo(" fr"); 当您单击按钮时,请检查活动的CutureInfo,然后切换到正确的