Автозаполнение в приложении Windows

Как я могу выбрать значение в текстовом поле символ за символом Как текстовое поле автозаполнения HDPOS

Я пытался При загрузке страницы

private void loadproductName()
{
    DataTable dt = _poshelper.getproductName("Bill_Select_ProductName");
    if (dt.Rows.Count != 0)
    {
        string[] postSource = dt
                .AsEnumerable()
                .Select<System.Data.DataRow, String>(x => x.Field<String>("UniqueName"))
                .ToArray();

        var source = new AutoCompleteStringCollection();
        source.AddRange(postSource);
        txtItemName.AutoCompleteCustomSource = source;
    }     
}

В отпуск

private void txtItemName_Leave(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtItemName.Text))
    {
        DataSet ds1 = _poshelper.getproductNameExistWhileLeave(txtItemName.Text);
        if (ds1.Tables[0].Rows.Count == 0)
        {
            txtItemName.Text = "";
            txtItemName.Focus();
        }
        else
        {
            loadLeave(ds1);
            txtItemName.Focus();
        }
    }
}

мне нужно

Если я удалю символ с помощью backspace, он удалит навсегда

Автозаполнение в приложении Windows

Мне нужно 2-е изображение, если я удалю, значит, мне нужно, чтобы содержимое оставалось в текстовом поле

Автозаполнение в приложении Windows

Обновлять

дополнительные пояснения из комментариев

The String in the textbox it should not be deleted if i press back space Key. Instead it should select each character.Every time i press backspace

Не могли бы вы подробнее объяснить свое требование? Я не понимаю вас полностью! что вы хотите сделать здесь, "выберите значение в текстовом поле символ за символом"

Amit 14.05.2018 13:28

Строка в текстовом поле не должна удаляться, если я нажму клавишу пробела. Вместо этого он должен выбирать каждый символ. Каждый раз, когда я нажимаю клавишу Backspace

Mani Rathinam 18.05.2018 09:18

Ваш вопрос был трудным для понимания, но я ответил, попробуйте и дайте мне знать, если это то, что вы хотите.

Amit 18.05.2018 13:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
58
1

Ответы 1

Здесь я предлагаю изменения, чтобы ваше текстовое поле имело следующее поведение.

Если вы не хотите, чтобы текст "добавленное предложение" (как показано на первом изображении) исчезал при вводе backspace в текстовое поле,

вы можете сделать это эти шаги

  • Получить текущий текст текстового поля (удален последний символ, поскольку мы отступили назад)
  • Очистить текст текста
  • Отправить текст взятый текст обратно в текстовое поле

сделайте следующее изменение в вашем коде

private void loadproductName()
{
  DataTable dt = _poshelper.getproductName("Bill_Select_ProductName");
  if (dt.Rows.Count != 0)
  {
    string[] postSource = dt
            .AsEnumerable()
            .Select<System.Data.DataRow, String>(x => x.Field<String>("UniqueName"))
            .ToArray();

    var source = new AutoCompleteStringCollection();
    source.AddRange(postSource);
    txtItemName.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
    txtItemName.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
    txtItemName.AutoCompleteCustomSource = source;
  }
}

Я не уверен, что вы делаете в событии Leave. Но вы можете добавить событие textBoxKeyUp и добавить в это событие код, как показано ниже.

private void txtItemName_KeyUp(object sender, KeyEventArgs e)
{
    // track for backspace
    if (e.KeyCode == Keys.Back)
    {
        if (txtItemName.Text != "")
        {
            string text = txtItemName.Text.Substring(0, txtItemName.Text.Count() - 1);
            txtItemName.Text = "";
            txtItemName.Focus();
            SendKeys.Send(text);
        }
    }
}

Другие вопросы по теме