Найдите конкретное c слово в текстовом поле и удалите все строки, содержащие это слово. - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужен код, который проверит, существует ли слово в textBox1 и удалит ли строку, если содержит это слово.

Слово равно crosshair 1

Я создал cod, если checkBox1.checked напишите несколько текст в textBox1 теперь мне нужен только этот код для serach для слова и удаления строки ... Заранее спасибо !!!

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

namespace ConfigMaker
{
    public partial class createnew : Form
    {
        public createnew()
        {
            InitializeComponent();
            saveFileDialog1.Filter = "Configuration files | *.cfg";
            saveFileDialog1.DefaultExt = "cfg";
        }

        private void bunifuCheckbox1_OnChange(object sender, EventArgs e)
        {
            if (bunifuCheckbox1.Checked)
            {
                textBox1.Text += "crosshair 1" + "\r\n";
            }
            else
            {


            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DialogResult result = saveFileDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                string name = saveFileDialog1.FileName;
                File.WriteAllText(name, textBox1.Text);
            }
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            var value = trackBar1.Value.ToString();
            label3.Text = value;
            textBox1.Text += "brightness " + value + "\r\n";
        }

        private void name_TextChanged(object sender, EventArgs e)
        {
            textBox1.Text += "name " + '\u0022' + name.Text + '\u0022' + "\r\n";
        }
    }
}

Вот код формы createnew. Теперь мне нужно перейти к следующему, когда bunifucheckbox1 unchecked, если crosshair 1 существует, удалить crosshair 1 из textbox1.text

Если trackbar1.value = 0, если brightness "value" существует, удалить brightness "value" из textbox1.text

И если textbox2.Text empty, если name "value" существует, удалите name "value" из textbox1.text.

Я пытался использовать этот код

private void bunifuCheckbox1_OnChange(object sender, EventArgs e)
        {
            string crosshair = "crosshair 0";
            string crosshair1 = "crosshair 1";
            if (bunifuCheckbox1.Checked)
            {
                textBox1.Text += crosshair.Replace(crosshair, crosshair1)  + "\r\n";
            }
            else
            {
                textBox1.Text += crosshair + "\r\n";
            }
        }

Но он все еще создает новый строка с замененным текстом ...

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

На самом деле вы не даете нам много go, например, многострочного однострочного TextBox.

В какой момент вы хотите, чтобы текст проверялся при вводе, после ввода, при печати кнопки?

Вы даже пробовали String.Contains(…)?

Я предлагаю вам взглянуть на документацию Microsoft здесь и выбрать пример, который вы понимаете и если у вас все еще есть проблемы, тогда вернитесь к нам.

edit

Если вы измените текст в TextBox как можно меньше строк, то вы можете просто используйте String.Replace.

Свойство Text TextBox является строкой, и String.Replace выдаст вам измененную строку только в том случае, если она может выполнить замену, которую вы о ней просите.

Ваш код должен выглядеть следующим образом:

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {

        if (checkBox1.Checked)
        {
            textBox1.Text = textBox1.Text.Replace("crosshair 0", "crosshair 1");
        }
        else
        {
            textBox1.Text = textBox1.Text.Replace("crosshair 1", "crosshair 0");
        }
    }
0 голосов
/ 28 апреля 2020

Я вижу, что вы всегда добавляете к исходному тексту. Если ваше текстовое поле содержит строку «перекрестие 1 \ r \ n», то строка

textBox1.Text += crosshair + "\r\n";

эквивалентна

textBox1.Text = textBox1.Text + crosshair + "\r\n";

, что означает

получить текст в текстовом поле «Перекрестие 1 \ r \ n», затем добавить к нему «перекрестие \ r \ n» и установить полученную строку («Перекрестие 1 \ r \ ncrosshair \ r \ n») т. е. две строки текста) в качестве нового текста текстового поля.

Никогда не заменяет любую часть текста в текстовом поле, которая кажется вам хотеть. Если текст в текстовом поле всегда точно либо «перекрестие», либо «перекрестие 1», тогда вы также можете просто установить текст «перекрестие 1», не нужно возиться с Replace ().

Я думаю, что вы должны сначала получить текст из текстового поля, изменить его и установить заново (или просто установить напрямую):

string oldText = textBox1.Text; 
string newText = oldText.Replace(crosshair1, crosshair);
 // or simply newText = crosshair;
textBox1.Text = newtext;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...