【问题标题】:How Can I Use Some Text Boxes in One Operation?如何在一次操作中使用一些文本框?
【发布时间】:2018-05-30 21:16:44
【问题描述】:

我是 C# 新用户。最近我正在做我的新项目。这是一种类似于 Notepad++ 的选项卡式记事本!

实际上,它有一个 Main TabControl Filled All 表单,还有一个默认的 TabPage 称为“新文本”,它包含一个 TextBox(RichTextBox)。 我的表格顶部也有一个停靠的panel!它包含一些PictureBoxes *这不是主题所以正如我告诉你(或没有!)这些PictureBoxes 能够做很多事情:D
例如,单击 PicFont 将更改所选文本的字体。 代码是:

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

另一方面,我有另一个Picture Box,它在我的Tab Control 中添加了一个新的Tab PageTextBox。使用此代码:

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); 
} 

但这不是我的问题!我希望这个 Void (PicFont_Click) 也可以为其他 TextBoxes 工作,而不仅仅是 RichTextBox1 ! Tnx 一百万……

【问题讨论】:

  • 嗯...你写了 90% 的问题不是关于你的问题。您能否编辑您的帖子以专注于您的问题以及到目前为止您为解决该问题所做的尝试?
  • 有例如一个标志或一个复选框,让用户选择并在创建控件测试之前查看选择了哪个控件。从用户的角度来看,它的用处仍然值得怀疑……

标签: c# richtextbox tabcontrol


【解决方案1】:

引入受 PicFont 方法影响的 RichTextBox 的集合。在P_Click 上,将新的 RichTextBox 添加到此集合中。在PicFont_Click 中,遍历所有受影响的 RichTextBoxes 并设置字体。

记住在关闭标签页时从该集合中删除 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;
        }
    } 
}

【讨论】:

  • 谢谢,它有效。
【解决方案2】:

我相信您正在寻找它以找到选定的选项卡,然后仅更改该选项卡上的 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;
} 

【讨论】:

  • 我试过这段代码,但 .FirstOrDefault() 不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多