c# - 方法未在 button_Click 事件上执行
问题描述
在我的 Visual Studio 项目中,我通过 foreach 语句为表(MySQL)上的每条记录创建一个按钮,每个按钮都是通过此方法创建的:
void createRewardButton(int y, int rewardsAmount, string rewardName, int value)
{
int x = 200;
//Create Button object
Button rewardButton = new Button();
///Set button properties
rewardButton.Name = "button"+rewardName;
rewardButton.Height = 60;
rewardButton.Width = 400;
rewardButton.Location = new Point(x,y);
rewardButton.Text = "You won "+ rewardsAmount + " awards for " + rewardName + ". Value: " + value + " tokens";
rewardButton.BackColor = Color.WhiteSmoke;
rewardButton.FlatStyle = FlatStyle.Flat;
//Add button to Awards Panel
panel_Rewards.Controls.Add(rewardButton);
///Button event handlers
rewardButton.MouseHover += new EventHandler(rewardButton_MouseEnter);
rewardButton.MouseLeave += new EventHandler(rewardButton_MouseLeave);
///Event handler for the click method
rewardButton.Click += new EventHandler((sender, e) => rewardButton_Click(sender, e, value));
//Button controls
void rewardButton_MouseEnter(object sender, EventArgs e)
{
rewardButton.BackColor = Color.FromArgb(100, Color.Gray); ;
}
void rewardButton_MouseLeave(object sender, EventArgs e)
{
rewardButton.BackColor = Color.WhiteSmoke;
}
// On click control method
void rewardButton_Click(object sender, EventArgs e, int rValue)
{
increaseTokens(rValue);
}
}
我希望每个按钮在每次点击时都执行 increaseTokens() 方法,该方法需要一个 int 参数。我发现我可以使用事件处理程序的 lambda 语法来使用“值”作为rewardButton_click 事件的参数。
这是 increaseTokens 方法的代码:
void increaseTokens(int value)
{
////Connection String//////////
string connStr = "SERVER=localhost;" + "DATABASE=scores;" + "UID=root;" + "PASSWORD=password;";
//Connection object
MySqlConnection dbcon = new MySqlConnection(connStr);
try
{
dbcon.Open();
}
catch (Exception err)
{
MessageBox.Show("Message: " + err.Message);
}
if (dbcon.State == ConnectionState.Open)
{
String query = "UPDATE agents SET agentTokens = @value WHERE agentEid = @EID";
//Create Command
MySqlCommand cmd = new MySqlCommand(query, dbcon);
cmd.Parameters.AddWithValue("EID", EID);
cmd.Parameters.AddWithValue("value", value);
cmd.ExecuteNonQuery();
}
}
按钮已创建,但单击按钮时未更新数据库。由于我没有收到任何错误或警报,我不知道rewardButton_click 事件是否接受int 参数并将其传递给increaseTokens() 方法。
任何有关如何解决此问题的信息将不胜感激。
解决方案
推荐阅读
- r - 来自多个变量的 Pivot_wider 函数(tidyr r 包)
- python - Android 上的 Python:`import paramiko` 失败
- html - 没有任何溢出和顶部的位置粘性不起作用?
- react-native - 致命异常:mqt_native_modules
- python - 在 mongodb 中使用 group by 之前的排序
- python - 检查字符串是否为空
- python - 无法解释“CategoricalDtype”
- jdbc - 关闭 JDBC 子包装器时出错:com.ibm.websphere.ce.cm.StaleConnectionException: Closed Connection
- javascript - Jquery使用参数值调用相同的函数
- html - HTML 报告的标题默认为报告的底部