Поиск подстроки в richTextBox. Редактирование найденных строк.





Допустим есть текстовый файл содержащий логины и пароли в следующем порядке:
первая строка будет содержать логин, а вторая строка пароль, т.е. логин всегда выше пароля на одну строчку.

Создаём проект.

Компоненты на форме:

1) Два textBox; — Первый для поиска логина, во втором будет отображаться логин найденный в базе.
2) две button; — Первую назовём «Поиск», вторую «Редактировать»
3) richTextBox.

Предполагается, что в richTextBox уже загружена база с логинами и паролями.

Теперь смотрим листинг:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication38
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int linenumber = 0;
        public bool FindLogin(string login) // метод поиска подстроки в строке
        {

            bool returnValue = false;
            linenumber = 0;
            int indexToText = -1;
            if (login.Length > 0)
            {


                indexToText = richTextBox1.Find(login);
                        if (indexToText >= 0)
                        {
                            textBox2.Text = login;
                            linenumber = richTextBox1.GetLineFromCharIndex(indexToText);
                            richTextBox1.SelectionStart = indexToText;
                            richTextBox1.SelectionLength = login.Length;
                            richTextBox1.Select(indexToText, login.Length);
                            richTextBox1.Focus();
                            returnValue = true;
                            
                        }

                        else
                        {

                            MessageBox.Show("Логин в базе не найден!");
                            returnValue = false;
                        }
            }
            return returnValue;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            FindLogin(textBox1.Text);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string login = textBox2.Text;
            string[] temp = new string[] { "string1", "string2", "string3", "string4" };
            temp = richTextBox1.Lines; 
            temp[linenumber] = login;
            richTextBox1.Lines = temp; 
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            char l = e.KeyChar;
    if ((l < 'A' || l > 'z') && l != '\b' && l != '.')
    {
        e.Handled = true;
    }
            }
        }
    }

И так, если логин найден в базе, то он автоматически отобразиться во втором поле.

Если логин изменить как показано на рисунке ниже и нажать на кнопку «Редактировать», то логин будет изменён и в richTextBox.

 

Один комментарий к “Поиск подстроки в richTextBox. Редактирование найденных строк.”

  1. Добрый день! Отличная, статья! А как подкорректировать поиск, чтобы он при повторном нажатии на «Поиск» продолжил поиск?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*