从用户控制表单更新父表单控件

时间:2019-10-11 18:48:59

标签: c# winforms user-controls

我有一个用户控制的gridview,其值每秒更改一次,因此我放置了一个间隔为1秒的计时器,并更新了gridview,

现在我想根据gridview的总行数(在计时器内)更新其父表单标签值

我尝试了以下用户控制形式的代码

  if (ParentFormInstance != null)
                    {

                        Label mylabel = (ParentFormInstance.Controls["lblTotalDevices"] as Label);                     
                        mylabel.Text = totalcount.ToString();
                    }

我在用户控件中具有一个属性

 public FormEmuHost ParentFormInstance { get; set; }

我在父表单构造函数中设置的此属性值:父表单代码

 public FormEmuHost(string ISdeveloper, EmuSettings emuSettings)
            {
                InitializeComponent();
            this.emuDeviceListControl1.ParentFormInstance = this;
            }

问题是,我总是在用户控制表单中将标签控制值设置为null enter image description here

1 个答案:

答案 0 :(得分:0)

您可以在用户控件内创建一个事件触发

public partial class CustomMapShapeEditor : UserControl
{
        public CustomMapShapeEditor()
        {
            InitializeComponent();
        }

        public EventHandler Ev_BTN_Pressed ;

        private void BTN_Click(object sender, EventArgs e)
        {
            if (Ev_BTN_Pressed != null)
                Ev_BTN_Pressed (this, e);
        }

}

然后以您的父表订阅到事件并处理事件。

this.childForm.Ev_BTN_Pressed += HandleChildBtnPress;

internal void HandleChildBtnPress(object sender, EventArgs e)
{

}