Member 14169626 Ответов: 1

Как сохранить значения строк, введенные в текстовое поле, в базу данных WPF?


Я хочу ввести данные между 50 и 100 строками в 5-символьное текстовое поле. Но я хочу, чтобы он не допускал кроме 5 символов. Как я могу это сделать и как я могу прочитать значение, введенное в текстовое поле.

Я хочу, чтобы значение текстового поля:

12345
14256
56888
14579
45796

и Я хочу сохранить его в базе данных как это пишется по одному за раз.

Что я уже пробовал:

<TextBox x:Name="textBoxList"  HorizontalAlignment="Left" Height="150" Margin="60,207,0,0" TextWrapping="Wrap" Text="TextBox" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" AcceptsReturn="True" VerticalAlignment="Top" Width="200"/>


Этот код показать

123451425656888..... // я умею писать.Но я хочу этого

12345
14256
56888

Поэтому я не хочу писать после 5 символов.

Например:

Введено два значения

12345
78457

два значения сохранить таблицу базы данных.

таблица person

КОЛОНКА PERSONID-ЭТО


12345
78457

ОПЕРАЦИОННАЯ

Введено четыре значения

12345
78457
45789
45785

два значения сохранить таблицу базы данных.

таблица person

КОЛОНКА PERSONID-ЭТО

12345
78457
45789
45785


использование (DataContext dt=new DataContext())
{
// когда я говорю сохранить введенные строки, как взять строку за строкой
}

Richard MacCutchan

Вам нужно захватить событие изменения текста для текстового поля и добавить новую строку после каждых 5 символов.

1 Ответов

Рейтинг:
2

BillWoodruff

Этот проект CP может быть полезен для вас: "HandlEdInput - мощный и легко настраиваемый обработчик ввода для TextBox, RichTextBox и ComboBox" [^]

Цитата:
Я хочу сохранить его в базе данных, как он записывается по одному за раз.
Одно "что" за раз ? Это не очень хорошая идея, если вы не хотите медленной производительности: запись в базу данных, когда вы накопили данные и подтвердил это.

Для управления вводом в текстовое поле способом, который вы описываете:
private int currentLineLength = 0;
private int lineLengthLimit = 5;
private int currentLineNdx;

// set 'AcceptsTab, and 'MultiLine, to 'true

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    // measure current line
    currentLineNdx = textBox1.GetLineFromCharIndex(textBox1.SelectionStart);

    currentLineLength = (currentLineNdx == 0)
        ? textBox1.Text.Length
        : textBox1.Lines[currentLineNdx].Length;
    
    // carriage return ?
    if (e.KeyChar == '\r')
    {
        // now CR is okay
        if (currentLineLength == lineLengthLimit)
        {
            currentLineLength = 0;
            return;
        }

        e.Handled = true;
        return;
    }

    // backspace is always ok
    if (e.KeyChar == '\b') return;

    // at the limit for line: cancel
    if (currentLineLength == lineLengthLimit)
    {
        e.Handled = true;
        return;
    }
    
    // numbers always ok
    if (Char.IsDigit(e.KeyChar))
    {
        currentLineLength++;
        return;
    }

    // ignore non-numeric, punctuation, control chars, etc.
    e.Handled = true;
}
Это взято из моего собственного кода для подклассового текстового поля WinForm: логика/код должны быть допустимы в WPF.