Управление элементом управления расширенного текстового поля в форме 1 из формы 2

1

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

Я просто изучаю С#, и я поставил себе небольшой проект, создав текстовый процессор вокруг элемента управления richtextbox с несколькими дополнительными функциями.

В настоящее время я просто добавляю возможность "Найти и заменить" текст, а приведенный ниже код работает при использовании в той же форме, что и элемент управления с большим текстовым полем.

richTextBox1.Rtf = richTextBox1.Rtf.Replace("bob", "bill");

Я не хочу использовать диалоговое окно или что-то подобное, я иду прямо от нашего старого друга VB6, хотя, поэтому я не уверен, что они все еще существуют как таковые, поэтому я делаю внешнюю форму, которая действует вроде как диалоговое окно, где я хотел бы, чтобы пользователь мог ввести текст, чтобы искать и заменять, а затем нажать "ОК" и вернуться к основной форме, звучит просто, да, возможно, я не знаю, что мне не хватает...

private void findReplaceToolStripMenuItem_Click(object sender, EventArgs e)
{
    Form3 AboutBox = new Form3();
    AboutBox.ShowDialog();
}

Я изо всех сил старался реализовать несколько ответов, которые я прочитал здесь, в одном из них мне удалось управлять формой1, но только если я открыл новый экземпляр с помощью form1.show(); после кода, который бесполезен в том, чего я пытаюсь достичь.

Я установил richTextBox1.Modifiers в Public, но я все еще царапаю голову над этим.

  • 1
    Этот вопрос является несколько широким, потому что правильный ответ также зависит от того, как вы хотите, чтобы ваша форма поиска взаимодействовала с родительской формой, запустившей диалоговое окно поиска. Если вы просто хотите предложить пользователю заменить строку, тогда достаточно простого ответа, например, Гранта. Однако, если вы хотите открыть диалоговое окно «Поиск» и оставить его открытым, когда пользователь переходит от найденного термина к термину, у вас впереди еще много работы. Достаточно работы, чтобы охватить 5-10 конкретных вопросов, если вы действительно новичок в программировании.
Теги:
winforms

1 ответ

1
Лучший ответ

Вместо того чтобы сделать RichTextBox общедоступным, я бы добавил свойство в другую форму, которая возвращает текст из этого элемента управления, например:

public class SearchForm : Form
{
    public string SearchTerm
    {
        get { return richTextBox1.Text; }
    }

    ...

Когда пользователь закрывает форму поиска, вы можете получить поисковый запрос, указав свойство:

private void findReplaceToolStripMenuItem_Click(object sender, EventArgs e)
{
    string searchTerm;

    using (var searchForm = new SearchForm())  // used 'using' to dispose the form
    {
        searchForm.ShowDialog();

        searchTerm = searchForm.SearchTerm;
    }

    // do something with searchTerm
}

Вы обнаружите, что это делает обслуживание более управляемым. Изменение имен элементов управления в одной форме не должно требовать внесения изменений в любую другую форму, которая их использует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню