0

我遇到了这种情况:“如果我选择了一个单选按钮并选中了一个特定的复选框,那么单选按钮的文本应该被复制到一个文本框中”。

public void radiobutton_CheckedChanged(object sender, EventArgs e)
{
    object s;
    s = radiobutton.Text;
    checkBox2_CheckedChanged(s,e);
}

private void checkBox2_CheckedChanged(object sender,EventArgs e)
{
    if (checkBox2.Checked == true)
    {
        textBox.Text = Convert.ToString(sender);
    }
}

我试过这段代码,但它不工作。什么可能导致它无法正常运行?

4

4 回答 4

8

好吧,您可以以更简单的方式做到这一点:

public void radiobutton_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox2.Checked == true) 
    {
        textBox1.Text = radiobutton.Text;
    } 
}
于 2013-05-12T15:39:58.153 回答
2

试试这个,记住此时它是一个对象。

   private void checkBox2_CheckedChanged(object sender,EventArgs e)
    {
        if (checkBox2.Checked == true)
        {
            textBox.Text = (((object[])(sender))[0]).ToString();
        }
    }
于 2013-06-18T20:23:43.693 回答
2

解决方案 1

为什么不只是这个?checkBox2_CheckedChanged您在事件中调用事件是否有特定原因radiobutton_CheckedChanged

public void radiobutton_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox2.Checked == true)
    {
        textBox.Text = radiobutton.Text;
    }
}

解决方案 2

否则为了代码管理。您可以这样做,然后将事件传递radiobutton_CheckedChangedcheckBox2_CheckedChanged事件。

public void radiobutton_CheckedChanged(object sender, EventArgs e)
{
    checkBox2_CheckedChanged(s,e);
}

其中checkBox2_CheckedChanged事件如下。

private void checkBox2_CheckedChanged(object sender,EventArgs e)
{
    if (checkBox2.Checked)
    {
        textBox.Text = radiobutton.Text;
    }
}
于 2013-06-20T00:22:36.967 回答
1

你的问题不是很清楚,但这是我的理解:

当一个复选框被选中时,您需要文本框中所选单选按钮的文本。您可以先单击单选按钮然后单击复选框,或者先单击复选框然后更改单选按钮。

您必须触发每个事件,并执行一项操作(更新文本框):

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        this.UpdateTextBox();

        // other thing if you want
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        this.UpdateTextBox();

        // other thing if you want
    }

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        this.UpdateTextBox();

        // other thing if you want
    }

    private void UpdateTextBox()
    {
        if (this.checkBox1.Checked == true)
        {
            String value = String.Empty;
            if (this.radioButton1.Checked == true)
            {
                value = this.radioButton1.Text;
            }
            else if (this.radioButton2.Checked == true)
            {
                value = this.radioButton2.Text;
            }
            // and so ....

            this.textBox1.Text = value;
        }
        else
        {
            this.textBox1.Text = String.Empty;
        }
    }
于 2013-06-18T13:39:24.780 回答