删除代码中的冗余
本文关键字:冗余 代码 删除 | 更新日期: 2023-09-27 18:30:37
我在这方面还是新手,所以我会尽力解释我的问题。英语不是我的第一语言,所以如果我错误地使用某些术语,我深表歉意。
我有一个 100 行代码,每次按下按钮时都会执行。我的问题是,我有 20 个按钮,它们都包含相同的代码(它们只是从不同来源获取信息的方式略有不同)。有没有办法做到这一点,而不是多次复制相同的代码。
基本上我的代码是这样的:
private void button1_Click(object sender, EventArgs e)
{
//file data source url
sourceUrl = ("www.myurl.com")
//Grab data
code
code
code
//Store data
code
code
code
//Write data
code
code
code
}
每个按钮都有相同的代码,除了"sourceUrl"部分。如果我想添加更多按钮,我必须复制>粘贴整个代码,我的应用程序开始变得巨大。有没有办法通过只使用一次代码,然后在每次按下按钮时调用操作或方法来缩小代码。因此,我不会多次使用 100 行代码,而是为每个按钮提供一个行代码,并在顶部有一个 100 行代码,该代码将成为该行代码的来源。
提前致谢
使用按钮的 Tag
属性存储源 url 字符串,然后为每个按钮设置相同的事件处理程序
private void buttonCommonHandler_Click(object sender, EventArgs e)
{
Button b = sender as Button;
CommonMethod(b.Tag.ToString());
}
private void CommonMethod(string sourceUrl)
{
// Execute the common code here....
}
您可以使用窗体设计器窗口设置公共处理程序和 Tag,也可以动态模拟设计器在InitializeComponent
调用中为您准备的代码
button1.Click += buttonCommonHandler;
button1.Tag = "www.myurl.com";
button2.Click += buttonCommonHandler;
button2.Tag = "www.anotherurl.com";
这就是函数的用途。使用此布局:
private void YourFunc(string sourceUrl)
{
//Grab data
code
//Store data
code
//Write data
code
}
现在,按钮的事件处理程序如下所示:
private void button1_Click(object sender, EventArgs e)
{
YourFunc("www.myurl.com");
}
private void button2_Click(object sender, EventArgs e)
{
YourFunc("www.myurl2.com");
}
当然有办法。只需使整个函数成为将 url 作为字符串参数的函数即可。然后从你的代码后面调用该函数。
private void button1_Click(object sender, EventArgs e)
{
//file data source url
ProcessData("www.myurl.com");
}
private void ProcessData(string sourceUrl)
{
//Grab data
code
code
code
//Store data
code
code
code
//Write data
code
code
code
}
这里我们可以使用use CommandName
属性,通过在每个按钮的CommandName
属性中传递URL
并将其作为参数传递给你的Common Method
来获取数据,这样就可以创建一个函数并通过你btn_Click
事件调用它。
<asp:Button ID="button1" runat="server" Text="clickMe"
CommandName="put your URL here" OnCommand="button1_Click" />
<%--OnClick="button1_Click" />--%>
看到这里我们可以在属性中传递你的"URL"CommandName
,要记住的几件事,这里我们使用的是OnCommand
事件而不是按钮OnClick
事件,这样我们就可以在这里使用'CommandName'属性.1。OnCommand MSDN 2. 命令名称 MSDN
// private void button1_Click(object sender, EventArgs e)
private void button1_Click(object sender, CommandEventArgs e)
{
string sourceUrl = Convert.tostring(e.CommandName)
// Call function to grab data pass URL as parameter.
GrabDate (sourceUrl ) ;
所以现在URL
我们可以从 按钮CommandName
属性 .
3 .事件参数类
4 .CommandEventArgsClass