我是新的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 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一百万...
答案 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;
}