我有一个用户控件,其中有一个按钮,如果我从其他用户控件更改状态值,该按钮应启用/禁用。
有没有人能帮助我知道我如何才能做到这一点?如何捕捉启用/禁用按钮上更改的布尔值?
用户控制1工具
public Utilitaires()
{
InitializeComponent();
PanelSlider_Utils.Controls.Add(new TCP());
}
//My button btnUndo created from the Visual interface
public void btnUndo_Click(object sender, EventArgs e)
{
my code...
}
用户控制2 TCP
//My method which should by the bool canredo change the enabled state of my button btnredo Usercontrol1
public void Redo_CanRedoChanged(object Sender, bool CanRedo)
{
UTILS foo = new UTILS();
foo.btnRedo.Enabled = CanRedo;// This is my problem to reach the button btnRedo UserControl 1
}
对不起,我的英语...!谢谢
3条答案
按热度按时间tp5buhyn1#
好了劳伦特,这就解决了:由于它可能很复杂,我详细地介绍了所有的步骤,以供将来的读者参考。
首先,我创建了一个名为UserControl 1的UserControl;它只包含一个名为button 1的按钮。我将为您的两个用户使用此UserControl以保持简单。
为了使UserControl 1在左侧的工具箱中就绪,我编译了程序(F5)并停止它。现在,我将两个UserControl从工具箱拖到空Form 1中。因此,自动创建的示例是userControl 11和userControl 12。我将使第一个控件成为第二个控件。
将此程式码加入UserControl.cs的开头(在建构函式之前):
bool会让按钮的状态可供任何其他对象存取。我说的是'public',但如果您在相同的方案中工作,'internal'就足够了。不要使用'private',否则它将无法存取。
InControl属性将设置应由当前UserControl控制的其他示例。
现在,我双击UserControl 1中的按钮来生成委托,完成如下:
这将切换受控按钮的状态。
现在,让我们返回Form1.cs并通过添加第二行来修改构造函数:
完成后,第一个UserControl的按钮将切换第二个UserControl的状态。
wn9m85ua2#
如果您要做的只是启用/禁用控件,请尝试:
7uhlpewt3#
感谢@ken和@fredy给我指明了一条路。我找到了另一个适合我的解决方案:
用户控件1实用程序
用户控件2 TCP
再次感谢您的帮助!