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 に答える