通过表单检查保持选中的单选按钮C#Visual Studio 2010

时间:2016-05-21 18:10:34

标签: c# forms

我有一个带有10个单选按钮(Form2)的表单供用户检查(所有在同一组中)。然后按一个按钮转到下一个表单(Form3)。

在Form3上我有一个后退按钮,如果需要,可以返回到Form2来更改单选按钮。

当按下后退按钮时,它会转到带有所有单选按钮的Form2,但它不会显示之前检查过的单选按钮。

示例代码:

string SchoolName = "";

if (radioButton1.Checked)
{
    SchoolName = radioButton1.Text;
}

if (radioButton2.Checked)
{
    SchoolName = radioButton2.Text;
}

然后使用后退按钮返回上一个表单:

private void button3_Click(object sender, EventArgs e)
{         
    this.Close();

    th = new Thread(opennewform);
    th.SetApartmentState(ApartmentState.STA);
    th.Start();
}

private void opennewform(object obj)
{
    Application.Run(new Form2());
}

3 个答案:

答案 0 :(得分:1)

重新创建像 new Form2()这样的表单将添加一个带有默认值的初始化表单,这将导致您的更改失败。

解决你可以:

  • 玩show / hide而不是close / new
  • 保存对象状态,例如重新打开form2时可以调用
  • 之类的构造函数


    new form2(check1State,check2State,selectedDropItem,txtName...);


答案 1 :(得分:1)

opennewform()方法中,您正在实例化Form2副本,而不是回到原来的那个。{1}}。这就是为什么没有保存原始单选按钮选择的原因。您需要以某种方式返回到原始Form2实例,而不是创建新实例。

例如,您可以在用户关闭它时隐藏它,并在用户再次需要时重新显示它。

答案 2 :(得分:0)

您不会回到表单的同一个实例,而是创建一个新表单。请参阅下面的两个表单项目

表格1

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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Form2 form2;
        public Form1()
        {
            InitializeComponent();
            form2 = new Form2(this);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            form2.Show();
            string  results = form2.GetData();
        }
    }
}

表格2

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;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        Form1 form1;
        public Form2(Form1 nform1)
        {
            InitializeComponent();

            this.FormClosing +=  new FormClosingEventHandler(Form2_FormClosing);
            form1 = nform1;
            form1.Hide();
        }
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            //stops form from closing
            e.Cancel = true;
            this.Hide();
        }
        public string GetData()
        {
            return "The quick brown fox jumped over the lazy dog";
        }

    }
}