如何在C#中为检索到的数据调用此方法?

时间:2014-03-04 05:38:29

标签: c# visual-studio-2010 methods

我正在开发一个程序,允许您从下拉框中选择客户ID。选择客户ID后,客户的信息将从CSV文件中提取并显示在文本框中。

电话号码信息未格式化,但我希望它以格式显示(例如(800)674-3452)。我已经为此编写了一种方法,但我不确定如何调用它。你能帮忙吗?

- 如果这是一个愚蠢的问题,请抱歉。我还在学习。

    private void idBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        try // catch errors
        {
            string selectedCustomer; // variable to hold chosen customer ID
            selectedCustomer = idBox.Text; // retrieve the customer number selected

            chosenIndex = 0;
            bool found = false; // variable if customer ID was found
            while (!found && chosenIndex < allData.Length) // loop through the 2D array
            {
                if (allData[chosenIndex, 0] == selectedCustomer) // make sure it's the right customer
                {
                    found = true; // Yes (true) found the correct customer
                }

                chosenIndex++; // add one row 
            }
            chosenIndex -= 1; // subtract one because add 1 before exiting while

            /* 0 = customer ID
             * 1 = name
             * 2 = address
             * 3 = city
             * 4 = state
             * 5 = zip
             * 6 = phone
             * 7 = email
             * 8 = charge account - yes/no
             * 9 = good standing - yes/no
             */
            nameBox.Text = allData[chosenIndex, 1]; // put name in nameBox
            addressBox.Text = allData[chosenIndex, 2]; // put address in addressBox
            cityBox.Text = allData[chosenIndex, 3]; // put city in cityBox
            stateBox.Text = allData[chosenIndex, 4]; //puts state in stateBox
            zipBox.Text = allData[chosenIndex, 5]; // puts zip in zipBox
            phoneBox.Text = allData[chosenIndex, 6]; // puts phone number in phoneBox
            emailBox.Text = allData[chosenIndex, 7]; // puts email in emailBox
            if (allData[chosenIndex, 8] == "Yes") // check if charge account
            {
                yesChargeRadio.Checked = true; // true if Yes
            }
            else // otherwise
            {
                noChargeRadio.Checked = true; // true if No
            }
            if (allData[chosenIndex, 9] == "Yes") // check for good standing
            {
                yesStandingRadio.Checked = true; // true if Yes
            }
            else // otherwise
            {
                noStandingRadio.Checked = true; // true if No
            }
        }
        catch (Exception errorInfo) // catch error
        {
            MessageBox.Show("errors: " + errorInfo, "Error",
                MessageBoxButtons.OK, MessageBoxIcon.Error); // error message
        }

    }

以下是检查长度和格式的方法:

    private bool numberCheck(string str)
    {
        const int NUMBER_LENGTH = 10;
        bool valid = true;

        if (str.Length == NUMBER_LENGTH)
        {
            foreach (char ch in str)
            {
                if (!char.IsDigit(ch))
                {
                    valid = false;
                }
            }
        }
        else
        {
            valid = false;
        }
        return valid;
    }
    private void formatPhone(ref string str)
    {
        str = str.Insert(0, "(");
        str = str.Insert(4, ")");
        str = str.Insert(8, "-");
    }

3 个答案:

答案 0 :(得分:1)

您的代码差不多完成了。您需要做的是,在设置phoneBox.Text之前,您可以按以下方式调用方法:

if(numberCheck(allData[chosenIndex, 6]))
{

    formatPhone(ref allData[chosenIndex, 6]);
}

phoneBox.Text = allData[chosenIndex, 6]; 

如果您的方法带有参数参数,格式化的文字将在您的文章中更新,然后您可以将其分配到phoneBox

答案 1 :(得分:0)

我希望我理解你要问的具体部分:你调用你定义的方法就像静态方法IsDigit或MessageBox.Show一样,除了你不需要在方法名前加一个名字然后一个句点,因为该方法是调用它的对象的一部分。

所以,例如,如果我有一个方法:

public void ShowSomething()
{
     MessageBox.Show("stuff");
}

在课堂上,我可以这样称呼它:

ShowSomething();

要传递参数,我会在括号中列出它们,就像使用MessageBox.Show一样。

您可以使用像numberCheck这样的方法返回的值作为任何其他布尔值,因此您可以执行以下任何操作:

bool b = numberCheck(someString);
if (numberCheck(someString))
{
    //Do something, like displaying the phone number
}

此MSDN文档可能会对您有所帮助:http://msdn.microsoft.com/en-us/library/ms173114.aspx

答案 2 :(得分:0)

这是你要找的吗? :

.......
phoneBox.Text = numberCheck(allData[chosenIndex, 6]) ? 
                formatPhone(allData[chosenIndex, 6]) : 
                allData[chosenIndex, 6];
.......
private string formatPhone(string str)
{
    str = str.Insert(0, "(");
    str = str.Insert(4, ")");
    str = str.Insert(8, "-");
    return str;
}

上述代码将检查手机数据的有效性,如果有效设置为phoneBox.Text格式化的电话号码,则将phoneBox.Text设置为原始未格式化的手机数据。

For reference如果您不熟悉三元运算符(?)。