无法获取 label.text c#
Cannot get label.text c#
我是C#的新手,现在有一个我无法解决的问题。
我在多个标签页上创建了相同的标签:
public Label ChosenType = new Label();
private void EvalType()
{
Label labelChosenType = new Label();
labelChosenType.AutoSize = false;
labelChosenType.Left = 710;
labelChosenType.Top = 3;
labelChosenType.Width = 350;
labelChosenType.Height = 96;
labelChosenType.Text = "Some text";
labelChosenType.Font = new Font("Arial", 14, FontStyle.Bold);
labelChosenType.TextAlign = ContentAlignment.MiddleCenter;
labelChosenType.BackColor = Color.Red;
labelChosenType.ForeColor = Color.White;
labelChosenType.Click += new EventHandler(labelChosenType_Click);
tabControl1.SelectedTab.Controls.Add(labelChosenType);
}
private void SetGeneralInfo()
{
for (int i = 0; i < tabControl1.TabCount; i++)
{
tabControl1.SelectTab(i);
EvalType();
}
}
private void labelChosenType_Click(object sender, EventArgs e)
{
MessageBox.Show(labelChosenType.Text);
}
问题是消息框是空白的。为什么我不能从标签中获取文本? (这不是主要功能,但这是显示问题的最简单方法)
我试过添加 name like= "some text" + i,但是在所有选项卡上都是一样的,而且没有用。
谢谢!
您需要在当前结构中声明标签对象Public/Private(它需要在 void 函数之外),标签对象只能在 void EvalType()
函数中访问
public Label labelChoosenType = new Label();
private void EvalType()
{
labelChoosenType.AutoSize = false;
labelChoosenType.Left = 710;
labelChoosenType.Top = 3;
labelChoosenType.Width = 350;
labelChoosenType.Height = 96;
labelChoosenType.Text = "Some text";
labelChoosenType.Font = new Font("Arial", 14, FontStyle.Bold);
labelChoosenType.TextAlign = ContentAlignment.MiddleCenter;
labelChoosenType.BackColor = Color.Red;
labelChoosenType.ForeColor = Color.White;
labelChoosenType.Click += new EventHandler(labelChoosenType_Click);
tabControl1.SelectedTab.Controls.Add(labelChoosenType);
}
private void labelChoosenType_Click(object sender, EventArgs e)
{
MessageBox.Show(labelChoosenType.Text);
}
试试看这是否可行。
没有看到更多代码......我最好的猜测是你在 labelChooseType_Click()
事件处理程序中指的 labelChoosenType
不是你认为的 Label
。
您添加到 TabControl
的每个新 Label
都是 new Label
- 而 不是 [=11= 引用的标签] 在 EvalType()
方法之外。所以当你点击Label
时,text
属性引用了另一个你没有使用EvalType()
方法初始化的对象
如果您试图在单个事件处理程序中对多个相同类型的对象进行操作,最好使用 object sender
参数。就目前而言,完全不清楚 labelChoosenType
指的是什么对象。
private void labelChoosenType_Click(object sender, EventArgs e)
{
Label clickedLabel = sender as Label;
if (clickedLabel != null)
{
MessageBox.Show(clickedLabel.Text);
}
else
{
// clickedLabel is not a Label or is null, do something else
}
}
我是C#的新手,现在有一个我无法解决的问题。
我在多个标签页上创建了相同的标签:
public Label ChosenType = new Label();
private void EvalType()
{
Label labelChosenType = new Label();
labelChosenType.AutoSize = false;
labelChosenType.Left = 710;
labelChosenType.Top = 3;
labelChosenType.Width = 350;
labelChosenType.Height = 96;
labelChosenType.Text = "Some text";
labelChosenType.Font = new Font("Arial", 14, FontStyle.Bold);
labelChosenType.TextAlign = ContentAlignment.MiddleCenter;
labelChosenType.BackColor = Color.Red;
labelChosenType.ForeColor = Color.White;
labelChosenType.Click += new EventHandler(labelChosenType_Click);
tabControl1.SelectedTab.Controls.Add(labelChosenType);
}
private void SetGeneralInfo()
{
for (int i = 0; i < tabControl1.TabCount; i++)
{
tabControl1.SelectTab(i);
EvalType();
}
}
private void labelChosenType_Click(object sender, EventArgs e)
{
MessageBox.Show(labelChosenType.Text);
}
问题是消息框是空白的。为什么我不能从标签中获取文本? (这不是主要功能,但这是显示问题的最简单方法)
我试过添加 name like= "some text" + i,但是在所有选项卡上都是一样的,而且没有用。
谢谢!
您需要在当前结构中声明标签对象Public/Private(它需要在 void 函数之外),标签对象只能在 void EvalType()
函数中访问
public Label labelChoosenType = new Label();
private void EvalType()
{
labelChoosenType.AutoSize = false;
labelChoosenType.Left = 710;
labelChoosenType.Top = 3;
labelChoosenType.Width = 350;
labelChoosenType.Height = 96;
labelChoosenType.Text = "Some text";
labelChoosenType.Font = new Font("Arial", 14, FontStyle.Bold);
labelChoosenType.TextAlign = ContentAlignment.MiddleCenter;
labelChoosenType.BackColor = Color.Red;
labelChoosenType.ForeColor = Color.White;
labelChoosenType.Click += new EventHandler(labelChoosenType_Click);
tabControl1.SelectedTab.Controls.Add(labelChoosenType);
}
private void labelChoosenType_Click(object sender, EventArgs e)
{
MessageBox.Show(labelChoosenType.Text);
}
试试看这是否可行。
没有看到更多代码......我最好的猜测是你在 labelChooseType_Click()
事件处理程序中指的 labelChoosenType
不是你认为的 Label
。
您添加到 TabControl
的每个新 Label
都是 new Label
- 而 不是 [=11= 引用的标签] 在 EvalType()
方法之外。所以当你点击Label
时,text
属性引用了另一个你没有使用EvalType()
方法初始化的对象
如果您试图在单个事件处理程序中对多个相同类型的对象进行操作,最好使用 object sender
参数。就目前而言,完全不清楚 labelChoosenType
指的是什么对象。
private void labelChoosenType_Click(object sender, EventArgs e)
{
Label clickedLabel = sender as Label;
if (clickedLabel != null)
{
MessageBox.Show(clickedLabel.Text);
}
else
{
// clickedLabel is not a Label or is null, do something else
}
}