將 ToolStripButton 的點擊邏輯復用到普通 Button 上,核心原則是提取業務邏輯為獨立方法,而非直接複製事件處理器签名。
// 直接複製 ToolStripButton 事件簽名 → 錯誤
private void toolStripButton6_Click(object sender, EventArgs e) { ... }
private void button1_Click(object sender, EventArgs e) { toolStripButton6_Click(sender, e); } // 不推薦
// 1. 核心邏輯獨立
private void QueryStudentGrades(string studentName) {
using (var conn = new SqlConnection(connStr))
using (var da = new SqlDataAdapter(
"SELECT * FROM 學生成績表 WHERE 姓名=@name", conn)) {
da.SelectCommand.Parameters.AddWithValue("@name", studentName);
var dt = new DataTable();
da.Fill(dt);
// 處理 dt...
}
}
// 2. 兩個按鈕分別調用
private void toolStripButton6_Click(object sender, EventArgs e) {
QueryStudentGrades(Login.sn.Trim());
}
private void btnQuery_Click(object sender, EventArgs e) {
QueryStudentGrades(Login.sn.Trim());
}
同理適用於 MenuItem、ContextMenuStrip 等所有觸發同一業務的入口。