在我的项目中,我创建了具有属性的usercontrol。此userControl以主要形式添加到Panel控件中。我希望该属性值出现在主窗体按钮单击事件中。
用户控制类代码:
public partial class uc_protectionTbl1 : UserControl
{
public string obsValue { get; set; }
}
主窗体类代码:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
addUserControl();
}
private void addUserControl()
{
uc_protectionTbl1 objUC = new uc_protectionTbl1();
panelUC.Controls.Add(objUC);
}
private void SavetoolStripMenuItem1_Click(object sender, EventArgs e)
{
//Here I want this property value
}
我尝试使用foreach循环从面板获取控件,但是如何获取属性值?
我尝试过
private void SavetoolStripMenuItem1_Click(object sender, EventArgs e)
{
string testValue;
foreach (Control p in panelUC.Controls)
{
if (p is uc_protectionTbl1)
{
testValue = //test value is the value from property
}
}
}
谢谢!
答案 0 :(得分:1)
您可以使用LINQ来获得对控件的强类型引用:
var myControl = panelUC.Controls.OfType<uc_protectionTbl1>().FirstOrDefault();
string testValue = myControl?.obsValue;
请注意,testValue
可能是null
-您应进行检查。
我还建议您使用C#代码样式,其中所有类型和方法都使用PascalCase
(即以大写字母开头)。