- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想向我的 button_click 函数添加一个可选参数,以便我可以通过从另一个函数调用它来插入其他信息。
代码如下:
private void button1_Click(object sender, EventArgs e, string bla = "")
{
if (bla.Length > 0)
{
MessageBox.Show(bla);
}
else
{
MessageBox.Show("Hi!");
}
}
private void button1_trigger()
{
button1_Click(null, null, "hi");
}
我从 visual studio 2012 得到的错误
最佳答案
虽然看起来您的代码应该可以工作(最后一个参数是可选的,因此“button1_Click”应该仍然与委托(delegate)匹配),但由于 C# 编译器的限制,它不会。即,编译器无法将方法与委托(delegate)匹配,其中方法具有重载或可选参数。 (这是有充分理由的——您可能认为优雅地处理这些情况会更复杂。Eric Lippert 在他的博客上写过关于这个主题的文章。)
我只想添加另一个适用于这两种情况的函数,并从处理程序中调用该函数:
private void trigger(object sender, EventArgs e, string bla = "")
{
if (bla.Length > 0)
{
MessageBox.Show(bla);
}
else
{
MessageBox.Show("Hi!");
}
}
private void button1_Click(object sender, EventArgs e)
{
trigger(sender, e);
}
private void button1_trigger()
{
trigger(null, null, "hi");
}
编辑
因此,如果您出于某种原因不想添加额外的函数,那么您可以使用 lambda 来添加处理程序:
this.button1.Click += (sender, args) => this.button1_Click(sender, args);
生成的编译代码实际上非常相似(我相信 C# 编译器会为匿名委托(delegate)添加另一个成员函数),但这种语法肯定更紧凑。
关于c# - 向 button_click 函数添加可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26792008/
是否可以将变量传递给 button_click 过程? 背景: 我有 2 个程序,它们都执行一些操作,然后都打开 Form_1。现在,根据打开 Form_1 的过程,我希望命令按钮对表单上的数据执行不
我有代码 Page_Load 和 btnGonder_Click。当我单击 btnGonder 时,我将一些数据记录到数据库中。我在数据列表中获取并显示 page_load 中的代码的数据。问题是当我
我正在尝试使用按钮单击事件来终止 notepad.exe。 因为process.WaitForExit()需要在一个线程中; 现在,点击按钮根本没有任何作用,不知道为什么。 在此先感谢您的帮助:) 这
我正在创建一个用于列出文件的动态表。 它显示文件名、文件大小、修改日期列。此外,我还添加了一列:删除。 在表格中列出文件夹的文件的方法。 public void listFile() { va
我想向我的 button_click 函数添加一个可选参数,以便我可以通过从另一个函数调用它来插入其他信息。 代码如下: private void button1_Click(object s
我在下面有这个 button5 函数。我想要的是,当用户在单击 button5 后想要单击 button1 时,button5 中的 while 循环应该中断,因为选择现在是 1。Choice 是一个
当用户单击我的验证按钮(在我的 C#、WinForm、.net 3.5 应用程序中)时,我想在某个控件周围绘制一个边框(如果它是空的)。假设一个名为 tbxLastName 的文本框,我想我需要做这样
我是 C++ 和 Windows 应用商店编程的新手,我一直在定义按钮上的点击处理程序。我指的是 these说明: Add a Button control to a parent container
我在一个包含用户控件的简单页面中使用通用列表。 我使用 Session 变量填充此列表。此 session 变量在我的 Button_click 事件中设置。 当用户单击按钮时,会设置 session
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
当用户点击按钮上的回车键(而不是鼠标单击按钮时)取消点击事件的简单方法是? 我尝试过: private void button3_Click(object sender, EventArgs
Ted Faison 在 podcast on event-based software design在 .NET、C++ 和 Java 事件语句中提到了“sender”和“self”对象,例如: p
如您所见(如果您查看我之前的一些问题),我对 Qt 还很陌生。我正在制作“read-from-excel-file-push-to-some-DB”模块。 我想在 main.cpp 中获取按钮返回的路
我知道之前有人问过这个问题,但经过大约一个小时的搜索,我无法找出向事件处理程序添加参数的最简单方法。默认情况下,这些处理程序的模板只能接受 (object sender, RoutedEventArg
我正在尝试从数据文件和列表框中删除一行。但我收到错误:'removeButton_Click' 的重载不匹配委托(delegate) 'System.EventHandler'。我该如何解决这个错误?
protected void Button1_Click(object sender, EventArgs e) { TableRow tb = new TableRow(); Tab
我通过将数据显示到数据 GridView 来完成一个窗口窗体应用程序。但是在datagridview中显示数据时出现了一些问题。 函数: private void MySQL_ToDatagridvi
Bootstrap 登录表单如下: User Name Password Log In 单击
我总是不断收到类型错误,说我缺少 1 个必需的位置参数,即“self”,我该如何解决这个问题? from tkinter import * import tkinter from client imp
我正在使用 C#.NET 创建一个数据驱动的应用程序。在此应用程序中,当用户单击加载按钮时,csv 文件中的数据将加载到数据 GridView 中。 此外,还有用于将数据 GridView 中的数据插
我是一名优秀的程序员,十分优秀!