构造按钮单击方法以避免代码重复
本文关键字:代码 按钮 单击 方法 | 更新日期: 2023-09-27 18:00:58
我有以下两个按钮单击方法,它们从三个TextBoxes创建一个数组,对值进行排序,将它们插入数据库,然后以相同的顺序选择值。这两个按钮之间的唯一区别是,一个按升序排列值,另一个按降序排列值。
我不习惯使用C#。有人能提出构建代码的最佳方法吗?这样我就不会为每个按钮重复了?通常我会写一个函数,让每个按钮传递参数。这是去这里的正确路吗?
提前谢谢。
按钮1
protected void Button1_Click(object sender, EventArgs e)
{
var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
var orderedlist = list.OrderBy(x => (x)).ToArray();
SqlCommand cmd = new SqlCommand("Select * from lists order by values asc", conn);
按钮2
protected void Button2_Click(object sender, EventArgs e)
{
var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
var orderedlist = list.OrderByDescending(x => (x)).ToArray();
SqlCommand cmd = new SqlCommand("Select * from lists order by values desc", conn);
您可以将两个Button
单击事件分配给同一个处理程序,并使用sender
选择您想要的排序。
protected void Button_Click(object sender, EventArgs e)
{
var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
var orderedlist = (sender as Button).AccessKey == "Button1" // or whatever name it is
? list.OrderByDescending(x => (x)).ToArray()
: list.OrderBy(x => (x)).ToArray();
.............
}
On选项将创建一个函数,排序:
public list sort(String order)
{
var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
var orderedlist = list.OrderByDescending(x => (x)).ToArray();
...
SqlCommand cmd = new SqlCommand("Select * from lists order by values " + order, conn)
...
return SortedList;
}
调用sort("asc"(以升序创建已排序列表,并调用排序("desc"(以降序排序。并且没有代码重复:(
您基本上可以在这里使用函数式编程。抽象代码中变为函数的部分。
protected void Button1_Click(object sender, EventArgs e)
{
HelperFunction(list => list.OrderBy(x => x));
}
protected void Button2_Click(object sender, EventArgs e)
{
HelperFunction(list => list.OrderByDescending(x => x));
}
private void HelperFunction(Func<IEnumerable<string>, <IEnumerable<string>> listOrderer)
{
var list = new string[] { TextBox1.Text, TextBox2.Text, TextBox3.Text };
var orderedList = listOrderer(list).ToArray();
// rest of code
}