首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量从用户控件传递到用户控件

将变量从用户控件传递到用户控件
EN

Stack Overflow用户
提问于 2017-01-18 22:40:39
回答 2查看 84关注 0票数 0

我需要一种将用户控件传递给用户控件的方法。

我正在使用Windows窗体。

例如。假设我在用户控制1中有一个无线电按钮,我希望用户控制2呼叫并查看该无线电按钮是否在用户控制1上被检查。我将如何引用它?

对于一些示例代码:

我是UserControl1

代码语言:javascript
复制
public void radioButton1_CheckedChanged(object sender, EventArgs e)
{

}

我是UserControl2

代码语言:javascript
复制
 private void button4_Click(object sender, EventArgs e)
{

            if (radioButton1.Checked)
               //do something
            else
               //do something
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-18 22:43:49

您的表单上似乎有两个不相关的用户控件。UserControl2 (UC2)应该改变它的行为是发生在UserControl1 (UC1)上的事情。这意味着您应该在UC1上有一个事件,如果radiobutton1选中状态更改,该事件将触发。你也需要暴露无线电按钮的状态。您可以使用自定义EventArgs或公共属性来完成此操作:

UserControl1

代码语言:javascript
复制
public event EventHandler SomethingChanged;

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   if (SomethingChanged != null)
       SomethingChanged(this, EventArgs.Empty);
}

public bool IsSomethingEnabled => radioButton1.Checked;

UC2应该允许改变它的行为。这可以用公共财产来完成

UserControl2

代码语言:javascript
复制
public bool UseCoolFeature { get; set; }

private void button4_Click(object sender, EventArgs e)
{
    if (UseCoolFeature)
       //do something
    else
       //do something else
}

最后一步协调器,它将管理两个用户控件。这是你的表格。从UC1订阅事件和更改UC2状态:

表格

代码语言:javascript
复制
private void userControl1_SomethinChanged(object sender, EventArgs e)
{
    userControl2.UseCoolFeature = ((UserControl1)sender).IsSomethingEnabled;
}

您甚至可以使用就地事件处理程序:

代码语言:javascript
复制
userControl1.SomethingChanged += (s,e) =>
     userControl2.UseCoolFeature = userControl1.IsSomethingEnabled;
票数 3
EN

Stack Overflow用户

发布于 2017-01-18 22:46:01

您可以将值存储在会话中:

UserControl1

代码语言:javascript
复制
public void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    Session["radioButton1Checked"] = radioButton1.Checked;
}

UserControl2

代码语言:javascript
复制
private void button4_Click(object sender, EventArgs e)
{
    if (Session["radioButton1Checked"] != null && (bool)Session["radioButton1Checked"])
       //do something
    else
       //do something
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41730759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档