Я работаю с выигрышными формами.У меня есть две формы: моя основная форма, Form1
и форма, которую я сделал под названием TextBlock
.Я делаю текстовый редактор, где вы можете размещать текстовые поля вокруг страницы и редактировать их (вспомните слово).
Вот мои две формы.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
saveFileDialog.Filter = "Text File|*.txt";
var result = saveFileDialog.ShowDialog();
if (result == DialogResult.OK)
{
StreamWriter writer = new
StreamWriter(saveFileDialog.OpenFile());
writer.Write(tb_Main.Text);
writer.Dispose();
writer.Close();
}
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void button_tb_Click(object sender, EventArgs e)
{
TextBlock tb_edit = new TextBlock();
tb_edit.Text = "New Text Block";
// tb_edit.Multiline = true;
// tb_edit.Size = new Size(100,100);
// tb_edit.MinimumSize = new Size(50, 50);
tb_edit.form1 = this;
tb_edit.TopLevel = false;
tb_edit.btn_accepttb.BringToFront();
tb_Main.Controls.Add(tb_edit);
tb_edit.Show();
tb_edit.BringToFront();
}
}
и моя пользовательская форма здесь:
public partial class TextBlock : Form
{
public Form1 form1;
public TextBlock()
{
InitializeComponent();
}
private void btn_accepttb_Click(object sender, EventArgs e)
{
TextBox tb_edit = new TextBox();
tb_edit.Text = "New Text Block";
tb_edit.Multiline = true;
tb_edit.Size = this.Size;
int dif = form1.tb_Main.Lines.Count()*(int)tb_edit.Font.Size;
Point loca = new Point(this.Location.X,this.Location.Y+dif);
tb_edit.Location = this.Location;
form1.tb_Main.Controls.Add(tb_edit);
tb_edit.Show();
tb_edit.BringToFront();
form1.tb_Main.Controls.Remove(this);
}
}
Что он делает: делает копию моего TextBlock для размещения и изменения размера.когда он у вас есть, где вы хотите и насколько вы хотите большой, вы нажимаете кнопку, и он заменяет себя обычным текстовым полем такого размера в этой позиции.
Что я хочу, чтобы он делал: в настоящее время этоработает с одним исключением.Я добавляю его к элементам управления, tb_Main (мое основное текстовое поле, оно занимает всю форму) в Form1, он появляется.это правильный размер, за исключением случаев, когда я заполняю tb_Main текстом и прокручиваю, новое текстовое поле остается там, где оно находится, в то время как его родитель прокручивает за ним.
Вопрос: прокручиваю ли я вниз в свой документ и решаю ли я, что хочуздесь это текстовое поле, как мне обеспечить его положение относительно прокрутки текстового поля, в которое я его вставляю?tb_Main).