Хорошо, я забираю текст из текстового поля внутри формы. Из каждой буквы в этом тексте я хочу создать ярлык с собственным размером шрифта и цветом. Проблема в том, что когда я делаю цикл for для каждой буквы в тексте, который создает метки, метки в конечном итоге накапливаются друг с другом. И это приводит только к одному письму.
Как автоматически расположить метки рядом друг с другом, чтобы они снова напоминали обычный текст и не допустить его накопления?
Причина, по которой я хочу создать ярлык для каждой буквы, заключается в том, что в определенный момент я хочу, чтобы буквы двигались по отдельности.
class MyGroup: Control
{
string s;
private Random rnd = new Random();
public MyGroup()
{
this.AutoSize = true;
this.Location = new System.Drawing.Point(10, 10);
this.Name = "groupBox1";
this.Size = new System.Drawing.Size(126, 21);
this.TabIndex = 5;
this.TabStop = false;
//this.Text = "groupBox1";
}
public void SetString(string s)
{
this.s = s;
}
public void Fall()
{
for (int i = 0; i < s.Length; i++)
{
Label l = new Label
{
Location = new System.Drawing.Point(this.Location.X, this.Location.Y),
ForeColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256)),
Font = new Font("Arial", rnd.Next(7, 15), FontStyle.Bold)
};
l.Text += this.s[i];
this.Parent.Controls.Add(l);
}
this.Visible = false;
}
}
в Form.cs:
private void button1_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(EnteredText.Text) && EnteredText.Text.Length > 1)
{
EnteredText.Text.ToCharArray();
groupBox1.SetString(EnteredText.Text);
groupBox1.Fall();
}
else
{
MessageBox.Show("Please enter a text with more than 2 letters.");
}
}