一个按钮上的多个操作

时间:2014-12-09 17:31:02

标签: c# winforms

在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";
            }
        }
}

谢谢,请向初学者说清楚。我是“菜鸟”。

2 个答案:

答案 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,然后切换到正确的