クロームのようなタブが付いたメモ帳を作成しようとしています。ページに[新しいページ]ボタンがあります。それをクリックすると、richtexboxを含む新しいタブページが作成されます。リッチボックスはこのように作成されます
public void yeni()
{
//create a new tabpage
TabPage newPage = new TabPage("Not-" + (tabControl1.TabPages.Count + 1));
//create a new richtexbox
RichTextBox rtb = new RichTextBox();
int rtbname = tabControl1.TabPages.Count + 1;
rtb.Name = "richTextBox" + rtbname.ToString();
rtb.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right | AnchorStyles.Left | AnchorStyles.Top);
rtb.BorderStyle = BorderStyle.None;
rtb.Width = 778;
rtb.Height = 395;
rtb.Location = new Point(0, 4);
rtb.HideSelection = false;
rtb.Font = new Font("Lucida Console", 9.75f);
rtb.ForeColor = Color.Maroon;
//add rtb to the tabpage
newPage.Controls.Add(rtb);
tabControl1.TabPages.Add(newPage);
//make the new created tab the selected one
tabControl1.SelectedTab = tabControl1.TabPages[tabControl1.TabPages.Count - 1];
//selectedRtb.Text = null;
openFileDialog1.FileName = null;
}
ここでRichTextBoxを作成し、そのrtbの名前はrichTextBox *indexofthetabhere*です。したがって、2番目のタブページで作業している場合、rtbの名前は「richTextBox2」です。今私がやろうとしているのは、選択したタブページのリッチテキストボックスのtextchangedイベントが必要なことです。ここで、このコードを使用して選択したリッチテキストボックスを取得しています。
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
selectedone = "richTextBox" + (tabControl1.SelectedIndex+1).ToString();
selectedRtb = (RichTextBox)tabControl1.SelectedTab.Controls[selectedone];
textBox2.Text = selectedone;
}
ここで、選択したタブインデックスを取得し、rtb名を取得してから、選択したrtbを「selectedRtb」として取得します。現在、このためにtextchangedイベントを作成することはできません。実際にどうしたらいいのかわかりません。上記のコードが機能しているかどうかをテストしました。はい、rtb名を正しく取得しました。でも、やり方がわからないので使えません。助けてくれてありがとう。