Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 枚举和单选按钮_C#_Winforms_Enums - Fatal编程技术网

C# 枚举和单选按钮

C# 枚举和单选按钮,c#,winforms,enums,C#,Winforms,Enums,如何判断是否选中了单选按钮并在开关中执行了操作?这是我代码的一部分: 这是我班的Person.cs public enum TypeTimer { Unlimited, Countdown, Limited} 这是我的开关,我将把功能放在这里 public Person(TypeTimer s1) { switch (s1) { case TypeTimer.Unlimited:

如何判断是否选中了单选按钮并在开关中执行了操作?这是我代码的一部分:

这是我班的Person.cs

 public enum TypeTimer { Unlimited, Countdown, Limited}
这是我的开关,我将把功能放在这里

public Person(TypeTimer s1)
        {
            switch (s1)
        {
            case TypeTimer.Unlimited:
                (code here)
                break;

            case TypeTimer.Countdown:
                     (code here)
                     break;
            case TypeTimer.Limited:
                    (code here)
                    break;
            default:
                    break;
        }
        }
如何判断checked==true是否等于enum limited或unlimited或countdown

这是Form.cs

private void button1_Click(object sender, EventArgs e)
        {
            if (rbtnNormalTimer.Checked == true)
            {

            }
            else if(rbtnCountDown.Checked == true)
            {

            }
            else if(rbtnLimited.Checked == true)
            {

            }
        }
例如:如果选中rbtnLimited,我想执行TypeTimer.Limited中开关内部的代码
有人能帮我吗?

您可以使用适当的枚举调用person方法/构造函数,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    if (rbtnNormalTimer.Checked == true)
    {
        Person(TypeTimer.Unlimited);
    }
    else if(rbtnCountDown.Checked == true)
    {
        Person(TypeTimer.Countdown);
    }
    else if(rbtnLimited.Checked == true)
    {
        Person(TypeTimer.Limited);
    }
}
对于构造器,按如下方式使用:

Person person;
if (rbtnNormalTimer.Checked == true)
{
    person = new Person(TypeTimer.Unlimited);
}
else if(rbtnCountDown.Checked == true)
{
    person = new Person(TypeTimer.Countdown);
}
else if(rbtnLimited.Checked == true)
{
    person = new Person(TypeTimer.Limited);
}

希望
public Person(TypeTimer s1)
将是
Person
类的构造函数,并且您希望根据单选按钮的选择创建一个新的Person对象。以下代码将帮助您完成该工作;如果不是,则可以直接调用该方法,如
Person(TypeTimer.Unlimited)
这次不要忘记在方法签名中添加有效的返回类型:

private void button1_Click(object sender, EventArgs e)
 {
     Person p;
     if (rbtnNormalTimer.Checked)
     {
       p= new Person(TypeTimer.Unlimited)
     }
     else if (rbtnCountDown.Checked)
     {
        p= new Person(TypeTimer.Countdown)
     }
     else if (rbtnLimited.Checked)
     {
        p= new Person(TypeTimer.Limited)
     }
  // proceed with p
 }

我使用控件的tag属性使其正常运行。检查一个控件后,我得到它的tag属性,并使smth类似

TypeTimer enu;
Enum.TryParse((sender as RadioButton).Tag, out enu);
Switch(enu)
        {
            case TypeTimer.Unlimited:
                (code here)
                break;

            case TypeTimer.Countdown:
                     (code here)
                     break;
            case TypeTimer.Limited:
                    (code here)
                    break;
            default:
                    break;
        }

不知道你在问什么。你把一切都准备好了。在每种情况下,只需将相应的枚举值发送给类构造函数。Person不是函数!!如何调用构造函数?@dotNET忘记了新的关键字。。。如果你试着快速处理itError,事情会变得一团糟:Person是一个“类型”,但像一个“变量”一样使用,并且“TypeTimer”在当前上下文中不存在,这就是我从你的code@M再试一次,我忘记了
new
关键字,对于
TypeTimer
,您应该在自己的枚举名称空间中添加一个using