如何在一次操作中使用某些文本框?

时间:2018-05-30 13:01:05

标签: c# richtextbox tabcontrol

我是新的C#用户。最近我正在研究我的新项目。这是一种像Notepad ++一样的Tabbed 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 PageTextBox内部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 :(得分:0)

介绍一系列受PicFont方法影响的RichTextBox。在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;
        }
    } 
}

答案 1 :(得分:0)

我相信您正在寻找它以查找所选标签,然后仅在该标签上的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;
}