单选按钮无法选择某些内容

时间:2014-06-03 18:18:03

标签: c# visual-studio

我正在尝试创建一个对话框,其中包含3个单选按钮和一个" Present"按钮与我们拥有的一些投影仪软件一起使用。我想要做的是,点击"出现"后,打开一个特定于使用单选按钮选择了哪个房间的文件。

问题是,点击"现在"没有任何反应。

我知道Process.Startpresent_Click是正确的;在一个测试项目中,我做了#34;现在"按钮成功打开文件。我确信CheckedChanged部分可能不正确,但我对如何使用它们感到困惑。

这是我的代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Diagnostics;

    namespace WindowsFormsApplication1
    {
       public partial class Form1 : Form
       {
           public Form1()
           {
               InitializeComponent();
           }

           public void present_Click(object sender, EventArgs e)
           {
               if (room1.Checked)
               {
                    System.Diagnostics.Process.Start(@"room1.txt");
               }
               else if (room2.Checked)
               {
                    System.Diagnostics.Process.Start(@"room2.txt");
               }
               else if (room3.Checked)
               {
                   System.Diagnostics.Process.Start(@"room3.txt");
               }
           }

           private void room1_CheckedChanged(object sender, EventArgs e)
           {
               room1.Checked = true;
           }

           private void room2_CheckedChanged(object sender, EventArgs e)
           {
               room2.Checked = true;
           }

           private void room3_CheckedChanged(object sender, EventArgs e)
           {
               room3.Checked = true;
           }
       }

有人可以帮助我使用这些单选按钮吗?

2 个答案:

答案 0 :(得分:3)

您的CheckedChanged事件处理程序肯定搞砸了。

用英语说,你的逻辑是

  

无论何时更改单选按钮的选中状态,请将其checked属性设置为true

老实说,我很惊讶你没有进入一个无限循环,每个控制都在争夺“选定的一个”。完全删除该逻辑可能会解决您的问题。你正在“开始”一个文本文件似乎很奇怪,但我认为这是故意的。

这里的重要知识是用户点击单选按钮会自动设置Checked属性。没有必要在代码隐藏中自己动手。

答案 1 :(得分:1)

我认为您需要删除在检查或取消选中时触发的事件。如果我理解得当,你只需要'某些东西'单击Present时发生。因此,一旦有人点击Present,请验证哪些复选框已开启/关闭并执行相应的操作:

很抱歉,如果我做出了错误的假设,请随时纠正。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {       
        public Form1()
        {
            InitializeComponent();
        }

        public void present_Click(object sender, EventArgs e)
        {
            if (room1.Checked)
            {
                System.Diagnostics.Process.Start(@"room1.txt");
            }
            else if (room2.Checked)
            {
                System.Diagnostics.Process.Start(@"room2.txt");
            }
            else (room3.Checked)
            {
                System.Diagnostics.Process.Start(@"room3.txt");
            }
        }
    }
}