C# 通过访问控制在窗体中启用按钮
可能重复:C# 通过访问控制在窗体中启用按钮,c#,winforms,C#,Winforms,可能重复: 我的表单Main上有btn消息,我还有用户控件(uc) 当我单击btnMessage时,它会打开uc,并使btnMessage.enabled=false。在uc中,有一个名为btnExecute的按钮 我想要的是,当我点击uc中的btnExecute时,Main表单中的btnMessage将被禁用。我怎么能做到 以下是更新代码: 我正在使用main.cs中的函数 public Main() { InitializeComponent();
我的表单
Main
上有btn消息
,我还有用户控件(uc
)
当我单击btnMessage
时,它会打开uc
,并使btnMessage.enabled=false
。在uc
中,有一个名为btnExecute
的按钮
我想要的是,当我点击uc
中的btnExecute
时,Main
表单中的btnMessage
将被禁用。我怎么能做到
以下是更新代码:
我正在使用main.cs中的函数
public Main()
{
InitializeComponent();
formFunctionPointer += new functioncall(buttonHideorEnabled);
ucMessageTarget.userFunctionPointer = formFunctionPointer;
}
public delegate void functioncall(bool _status);
private event functioncall formFunctionPointer;
public void buttonHideorEnabled(bool _status)
{
btnMessageTarget.Enabled = _status;
}
而在uc.cs中
:
public static string agentName = UtilitiesToolkit.agentMessageTarget;
public static string strn;
public UcMessageTarget(string str)
{
InitializeComponent();
strn = str;
}
public Delegate userControlPointer;
public Delegate userFunctionPointer;
private void btnExecute_Click(object sender, EventArgs e)
{
btnExecute.enabled = false;
userFunctionPointer.DynamicInvoke(false);
//I want btnMessage in Main form also disabled, please tell me how
}
但是,仍然没有起作用。当我编译时,我的main中有一个错误,在这一行:
public Main()
{
InitializeComponent();
formFunctionPointer += new functioncall(buttonHideorEnabled);
ucMessageTarget.userFunctionPointer = formFunctionPointer;
}
说,那
对象引用未设置为对象的实例(在
ucMessageTarget.userFunctionPointer=formFunctionPointer;)
请提供帮助。我更愿意做的是从主窗体侦听的用户控件引发事件,然后禁用此事件处理程序中的按钮 差不多 这将避免用户控件必须“知道”有关调用方(父窗体)的任何信息
稍微搜索一下,您会发现许多从用户控件引发事件的示例。我更愿意从主窗体侦听的用户控件引发事件,然后禁用此事件处理程序中的按钮 差不多 这将避免用户控件必须“知道”有关调用方(父窗体)的任何信息
稍微搜索一下,您会发现许多从用户控件引发事件的示例。您可以在代码隐藏中以编程方式订阅事件处理程序,因此请在“父”窗体中为“子”窗体的按钮添加一个事件处理程序:
uc.btnExecute.Click += new EventHandler(name_of_method_to_handle_click_event);
唯一的要求是控件必须是公共的,以便父窗体可以访问它。您可以通过编程方式订阅代码隐藏中的事件处理程序,因此在“父”窗体中为“子”窗体的按钮添加一个事件处理程序:
uc.btnExecute.Click += new EventHandler(name_of_method_to_handle_click_event);
唯一的要求是控件必须
public
,以便父窗体可以访问它。在uc中单击btnExecute时,如何使btnMessage enabled=false?在uc中单击btnExecute时,如何使btnMessage enabled=false?在uc中单击btnExecute时,如何使btnMessage enabled=false?如何使当我在uc中单击btnExecute时,btnMessage enabled=false?