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

Слово это crosshair 1

Я создал код, если 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";
            }
        }

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

c#
-2
Stefan Pisarov 28 Апр 2020 в 12:07

2 ответа

Лучший ответ

Я вижу, что вы всегда добавляете к исходному тексту. Если ваше текстовое поле содержит строку «перекрестие 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;
0
Peter - Reinstate Monica 28 Апр 2020 в 13:11

Вы действительно не даете нам много, например. многострочный, однострочный TextBox.

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

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

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

< Сильный > изменить

Если вы изменили текст в 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");
        }
    }
1
ChrisBD 28 Апр 2020 в 15:17