Как я могу использовать несколько текстовых полей в одной операции? - PullRequest
0 голосов
/ 30 мая 2018

Я новый пользователь C #.Недавно я работаю над своим новым проектом.Это своего рода блокнот с вкладками, как Notepad ++!

На самом деле, он имеет основную TabControl заполненную всю форму, а также имеет значение по умолчанию TabPage Вызывается «Новый текст», который содержит TextBox (RichTextBox).Моя форма имеет Docked panel вверху тоже!И он содержит некоторые PictureBoxes * Это не предмет темы, так как, как я уже говорил (или не говорил!), Эти PictureBoxes способны выполнять множество функций: D
Например, нажав на PicFont.Изменит шрифт выбранного текста.И Код:

    private void PicFont_Click(object sender, EventArgs e) 
{
    fontDialog1.ShowDialog();
    richtextBox1.SelectionFont = fontDialog1.Font;
} 

С другой стороны, у меня есть еще один Picture Box, который добавляет новый Tab Page с TextBox внутри к моему Tab Control.С этим кодом:

private void P_Click(object sender, EventArgs e) 
{
    TabPage tp = new TabPage("New Text"); 
    TabControl1.TabPages.Add(tp); 
    RichTextBox tb = new RichTextBox(); 
    tb.Dock = DockStyle.Fill; 
    tb.Multiline = true; 
    tb.WordWrap = false; 
    tp.Controls.Add(tb); 
} 

Но это не моя проблема!Я хочу, чтобы эта пустота (PicFont_Click) работала для других TextBoxes, а не только RichTextBox1 !!Tnx миллион…

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

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

private void PicFont_Click(object sender, EventArgs e) 
{
    fontDialog1.ShowDialog();
    var r = TabControl1.SelectedTab.Controls.FirstOrDefault(a => a is RichTextBox) as RichTextBox;
    if (r != null) 
        r.SelectionFont = fontDialog1.Font;
} 
0 голосов
/ 30 мая 2018

Представьте коллекцию RichTextBox, на которую должен влиять метод PicFont.На P_Click добавьте новый RichTextBox в эту коллекцию.В PicFont_Click переберите все затронутые RichTextBox и установите шрифт.

Не забудьте удалить RichTextBox из этой коллекции, когда его вкладка закрыта.

public partial class Form1 : Form {

    private IList<RichTextBox> AffectedBoxes { get; set; }

    public Form1() {
        // List must be initialized before we can add to it
        AffectedBoxes = new List<RichTextBox>();
        // other stuff ...
    }

    private void P_Click(object sender, EventArgs e) {
        // ...

        RichTextBox tb = new RichTextBox(); 
        AffectedBoxes.Add(tb); // remember that we have to handle this RichTextBox 

        // ...
    } 

    private void PicFont_Click(object sender, EventArgs e) {
        fontDialog1.ShowDialog();

        // loop over all affected boxes
        foreach (var box in AffectedBoxes) {
            box.SelectionFont = fontDialog1.Font;
        }
    } 
}
...