当前位置:编程学习 > C#/ASP.NET >>

求助:把一个按钮事件里面的方法提取出来,做成公用方法,以便其他事件可以调用

--------------------编程问答-------------------- 鼠标把需要提取的代码选中,然后右键-重构-提取方法 --------------------编程问答-------------------- 看你意思是要获得多个返回值的需求吧,用ref 传参吧。
public void GetStr(string strs ,ref string hostname,ref string service)
{
    ......
}

string hostname = "";//IP地址 

string service = "";//服务名或实例名 
setStr(strs ,hostname,service )
大概这个样子吧,没有编译过。 --------------------编程问答-------------------- 首先建议你:既然hostname、service、userid、password都要分别使用,为什么不当成单独的键值对写入config文件呢?这样用ConfigurationManager.AppSettings["hostname"]即可分别取得对应的参数值

第二:也可以把hostname、service、userid、password的作用域扩展到当前类,就是在按钮事件方法外声明这些变量,并用你现有的解析方法给他们赋值,那么以后的当前类的方法都可以直接使用这四个变量

第三:要做成公用的方法,可以

public string[] getArgs()
        {
            string strCnn = ConfigurationManager.AppSettings["conn"].ToString();
            string[] strs = strCnn.Split(new char[3] { ';', '(', ')' });
            string hostname = "";//IP地址
            string service = "";//服务名或实例名
            string userID = "";//用户名
            string password = "";//密码
            #region 获取
            foreach (string str in strs)
            {
                if (str.Contains("HOST"))//SQLServer服务器名称
                {
                    hostname = str.Substring(str.IndexOf("=") + 1);
                }
                else
                {
                    if (str.Contains("SID"))
                    {
                        service = str.Substring(str.IndexOf("=") + 1);
                    }
                    else
                    {
                        if (str.Contains("User Id"))
                        {
                            userID = str.Substring(str.IndexOf("=") + 1);
                        }
                        else
                        {
                            if (str.Contains("Password"))
                            {
                                password = str.Substring(str.IndexOf("=") + 1);
                            }
                        }
                    }
                }
            }
            string[] result = new string[4];
            result[0] = hostname;
            result[1] = service;
            result[2] = userID;
            result[3] = password;
            return result;
        }
--------------------编程问答-------------------- setStr(strs ,ref hostname,ref service );
--------------------编程问答-------------------- 三楼提议不错,这样其实可以建议作出对象。 --------------------编程问答-------------------- 谢谢三楼Michael_wlb1984,但要如何调用呢? --------------------编程问答-------------------- 比如我只要service的值 --------------------编程问答-------------------- 把你的方法里的所有代码行选取中,然后点击鼠标右键,选择“重构-->提取方法”,然后输入一个方法名称,再按回车即可。 --------------------编程问答-------------------- 谢谢三楼的提醒 --------------------编程问答--------------------
引用 7 楼 hwhtj 的回复:
比如我只要service的值

string[] result = getArgs();
            string service = result[1];
--------------------编程问答-------------------- 我现在把方法直接写在form_load事件中了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,