1

DataNamesをテキストボックス列に入力できるデータグリッドビューがあります。 のプロパティを使用して、この列の入力長を 6 文字に制限しMaxInputLengthますDataGridViewTextBoxColumn

ここで、私の問題を順を追って説明したいと思います。
1 . 全角文字(例:1234567890)をメモ帳に書いてコピーしたら、これDataGridViewTextBoxを右クリックして選択すると、 Paste123456と表示されDataGridViewTextBoxました。
2 .全角文字(例:123456)をメモ帳に書いてコピーしたら、これDataGridViewTextBoxを右クリックして選択すると、 Paste123456DataGridViewTextBoxが表示されました。
そのため、MaxInputLengthプロパティは入力文字の長さにのみ制限されます(半角または全角は関係ありません)。

123(6バイト)だけ表示したい。
特に貼り付け操作でバイト文字の長さを制限するプロパティまたは方法はありますか?

前もって感謝します。

4

1 に答える 1

2

TextChangedEventで処理できると思います

何かのようなもの:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var textBytes = Encoding.UTF8.GetBytes(textBox1.Text);
    var textByteCount = Encoding.UTF8.GetByteCount(textBox1.Text);
    var textCharCount = Encoding.UTF8.GetCharCount(textBytes);

    if (textCharCount != textByteCount && textByteCount >= 12)
    {
        textBox1.Text = Encoding.UTF32.GetString(Encoding.UTF32.GetBytes(textBox1.Text), 0, 12);
    }
    else if (textBox1.Text.Length >= 6)
    {
        textBox1.Text = textBox1.Text.Substring(0, 6);
    }
}  
于 2013-02-15T07:12:15.107 に答える