【发布时间】:2018-04-25 03:28:48
【问题描述】:
我正在通过代码创建一个新的图片框,但现在我的文本框没有给我任何值。我认为他们失去了焦点,或者他们的控件不再工作,这是到目前为止的代码:
private void button1_Click(object sender, EventArgs e)
{
int ErrorCode = 0;
string NewName = NewPointName.Text;
int X, Y;
Application.DoEvents();
if (NewPointName.Text == "")
ErrorCode = 1;
else
for (int i = 0; i < Names + 1; i++)
{
if (PointName[i] == NewName)
ErrorCode = 2;
}
if (ErrorCode > 0)
MessageBox.Show("Error " + ErrorCode);
else
{
if (Convert.ToInt32(NewPointXBox.Text) > 60)
X = 60;
else if (Convert.ToInt32(NewPointXBox.Text) < -60)
X = -60;
else if (NewPointXBox.Text == "")
X = 0;
else
X = Convert.ToInt32(NewPointXBox.Text);
if (Convert.ToInt32(NewPointYBox.Text) > 60)
Y = 60;
else if (Convert.ToInt32(NewPointYBox.Text) < -60)
Y = -60;
else if (NewPointYBox.Text == "")
Y = 0;
else
Y = Convert.ToInt32(NewPointYBox.Text);
Punkt.GiveName(NewName, Names);
Punkt.GiveCoordinates(X, Y, Names);
PointName[Names] = NewName;
NewPointName.Text = "";
NewPointXBox.Text = "";
NewPointYBox.Text = "";
Application.DoEvents();
UpdatePoint();
CreatePoint(X, Y, NewName, Names);
Names++;
ErrorCode = 0;
NewName = "";
}
}
public void CreatePoint(int X, int Y, string name, int i)
{
int StartPointX = 450, StartPointY = 450, Factor = 7;
if (RadioG6060.Checked)
{
StartPointX = 454;
StartPointY = 449;
Factor = 7;
}
Dot[i] = new PictureBox();
this.Controls.Add(Dot[i]);
Dot[i].Name = "PB_" + name;
Dot[i].Size = new Size(10, 10);
Dot[i].Image = Image.FromFile("../Dot.png");
Dot[i].Anchor = AnchorStyles.Left;
Dot[i].Location = new Point(StartPointX, StartPointY);
Dot[i].Visible = true;
InitializeComponent();
Dot[i].BringToFront();
Dot[i].Location = new Point(Dot[i].Location.X + (X * Factor), Dot[i].Location.Y - (Y * Factor));
Application.DoEvents();
}
我认为是 this.controls.Add(Dot[i]) 把它扔掉了,因为现在我无法访问我的 NewPointName 文本框中的文本。
我怎样才能让程序重新回到表单上,或者做任何可以再次激活框的事情?
【问题讨论】:
-
你是什么意思你不能“访问我的NewPointName文本框中的文本”?你想做什么,怎么不工作/你得到什么结果? -- 还有,你为什么到处打电话
Application.DoEvents()? -
我希望您知道,在您的代码底部,您清除了
NewPointName文本框的值:NewPointName.Text = ""; -
我知道,但是它们在程序的 UI 中被覆盖了。
-
“覆盖”是什么意思?它们是空的,还是你的图片框放在它们上面,覆盖它们?如果是前者:那就是它的工作原理。如果您更改
Text属性,那么 UI 中显示的内容也会发生变化。 -
不,我的意思是我想在文本框中写入文本,但它没有使用该文本,它使用的是我输入的空字符串。如果我把它排除在外,它使用的是我最后一件事盒子里写的,不是新的。它阻止了文本框的外部控制。