0

当出现“插入”表单时,我得到了一个 textbox1.text="J001" 。“插入”中有一个按钮,所以如果我们单击该按钮,mbox 会说“已添加 J001”。

但是,我想更改 textbox.text = "J002"; 所以我正在使用。

string splitter=textbox1.text.toString().subString(1)

它将返回 001。现在我必须使它成为 002?不过我不能对此 +1,此外,我没有使用任何数据库,因此当我们关闭表单并重新打开它们时,它将再次变为“J001”。单击按钮,文本变为“J002”。关闭表单,重新打开,它显示“J001”和无限循环。

4

3 回答 3

1

很难理解你想要什么,但也许这就是你想要的:

string splitter = textbox1.Text.ToString().Substring(1);

try {
    int number = Convert.ToInt32(splitter) + 1;
} catch (FormatException e) {
    // Not a number...
}

textbox1.Text = String.Format("J{0}", number.ToString());
于 2012-08-01T09:16:30.300 回答
1

使用静态变量跟踪您的号码,然后简单地格式化文本并将计数器加 1。如果您关闭应用程序并重新启动它,计数器将重新开始。如果您希望它持久存在,则必须将值保存在数据库之类的地方。

static int _counter = 0;

...

textbox1.Text = string.Format("J{0,2}", ++_counter);
于 2012-08-01T09:22:14.953 回答
0

像这样:它将处理可变长度前缀和可变长度数字(最长为 long,所以 19 位)。

首先它计算前缀后面的位数,然后用增加的值替换这些数字。

string str = "J9999";

int firstDigit = str.Length;

for (; firstDigit > 0; firstDigit--)
{
    if (!char.IsDigit(str[firstDigit - 1]))
    {
        break;
    }
}

if (firstDigit < str.Length)
{
    long num = long.Parse(str.Substring(firstDigit));
    num++;

    int numOfDigits = str.Length - firstDigit;
    var temp = num.ToString("D" + numOfDigits);

    //Uncomment this for fixed length with overflow: J999->J000, otherwhise you have J999->J1000
    //temp = temp.Substring(temp.Length - numOfDigits);

    str = str.Remove(firstDigit) + temp;
}
于 2012-08-01T09:22:25.377 回答