我们的链接按钮中有一个菜单条。我添加了一个项目,其中包含单选按钮和复选框的子项目。如果用户在表单上选择了一个单选按钮,并且在菜单条中选择了一个复选框项目,那么它应该转换为复选框控件,包括其所有属性,即前景色、背景色字体大小、字体样式等。
那么,您能否帮助我在表单运行时将单选按钮控件转换为复选框控件。
RadioButton控件无法转换为Checkbox控件,因为它们不在继承层次结构中。
但是,如果您需要这样做,您可以创建一个Checkbox控件,复制当时常用的属性,并且您需要重用,然后切换它们的可见性:
private CheckBox GetCheckboxFromRadioButton(RadioButton radioButton)
{
CheckBox result = new CheckBox();
//copy text
result.Text = radioButton.Text;
//copy colors
result.BackColor = radioButton.BackColor;
result.ForeColor = radioButton.ForeColor;
//copy checked state
result.Checked = radioButton.Checked;
//copy parent container
result.Parent = radioButton.Parent;
//copy size and location
result.Bounds = radioButton.Bounds;
//copy layout behavior
result.Dock = radioButton.Dock;
result.Anchor = radioButton.Anchor;
//enabled property
result.enabled = radioButton.Enabled;
// copy other properies you need here
//...
return result;
}
您可以创建自己的功能
CheckBox ConvertControl(RadioButton rb)
并使用您需要的每个属性初始化来实现 Checkbox 创建。由于控件不同,它们具有一些无法自动转换的特定属性——您应该明确它们应该如何被显式初始化。
您可以使用此代码
private void RadioButton1_Click(object sender, EventArgs e)
{
RadioButton1.Checked = !(bool)RadioButton1.Tag ;
}
private void RadioButton1_MouseDown(object sender, MouseEventArgs e)
{
RadioButton1.Tag = RadioButton1.Checked;
}