Far*_*man 30 c# user-controls winforms
如何在C#(winform)中访问用户控件的父控件.我使用以下代码,但它不适用于所有类型的控件,如ListBox.
Control[] Co = this.TopLevelControl.Controls.Find("label7", true);
Co[0].Text = "HelloText"
Run Code Online (Sandbox Code Playgroud)
实际上,我必须从用户控件中添加放置在父"Form"上的Listbox中的项目.
dkn*_*ack 55
您可以使用父控件Control.Parent.
因此,如果您在表单上放置了控件,则表示this.Parent您的表单.
在你的控制中你可以做到
Form parentForm = (this.Parent as Form);
Run Code Online (Sandbox Code Playgroud)
我的控件和列表框(listBox1)都放在窗体(Form1)上.当用户按下放在我的Control中的按钮时,我必须在listBox1中添加项目.
你有两种可能的方法来完成这项工作.
1.使用`Control.Parent
的MyUserControl
private void button1_Click(object sender, EventArgs e)
{
if (this.Parent == null || this.Parent.GetType() != typeof(MyForm))
return;
ListBox listBox = (this.Parent as MyForm).Controls["listBox1"] as ListBox;
listBox.Items.Add("Test");
}
Run Code Online (Sandbox Code Playgroud)
要么
2.
public MyForm ParentForm { get; set; }交给你UserControlListBox的名字listBox1另有更改名称MyForm的
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
this.myUserControl1.ParentForm = this;
}
}
Run Code Online (Sandbox Code Playgroud)
的MyUserControl
public partial class MyUserControl : UserControl
{
public MyForm ParentForm { get; set; }
public MyUserControl()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (ParentForm == null)
return;
ListBox listBox = (ParentForm.Controls["listBox1"] as ListBox);
listBox.Items.Add("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
key*_*rdP 10
您可以使用Control.Parent得到控制或父Control.FindForm拿到的第一个父Form控件上.在寻找表格方面,两者之间存在差异,因此一个可能比另一个更适合使用:
控件的Parent属性值可能与FindForm方法返回的Form不同.例如,如果RadioButton控件包含在GroupBox控件中,并且GroupBox位于Form上,则RadioButton控件的Parent是GroupBox,GroupBox控件的Parent是Form.