帮忙求助关于label
我想在窗口按下空格键后,生成新label(lab),并开启timer(timer1),此timer1每运行一次则lab.Location.X+10。但是问题在调试时,系统提示错误:lab在上下文中并没出现。
失意代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
timer1.Enabled = true;
Label lab=new Label();
lab.Location=new Point(50,50);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lab.Location = new Point(lab.Location.X+10, lab.Location.Y);
}
}
}
在timer1_Tick中的lab无法被识别,或许是封装性问题,但我不大记得了,如何让lab可以在timer1中可以调用?
谢谢大哥大姐的帮助。。。在此等你们的回答。
--------------------编程问答-------------------- Label lab=new Label();
定义在外面
--------------------编程问答-------------------- 如果需要让Lab显示在窗体中,需要添加
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
private System.Windows.Forms.Label lab;//这里定义
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
timer1.Enabled = true;
lab=new Label();
lab.Location=new Point(50,50);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lab.Location = new Point(lab.Location.X+10, lab.Location.Y);
}
}
}
--------------------编程问答-------------------- 嗯 楼上正解,想让他显示在哪个容器就把他Add到哪个容器里 --------------------编程问答-------------------- Label lab=new Label();
this.Controls.Add(this.lab);
你把他放在方法内部定义,怎么可能在另一个方法中调用到呢!!我倒!!! --------------------编程问答-------------------- 你最好定义label的name来区别label是哪个!!并且在 private void Form1_KeyDown(object sender, KeyEventArgs e)这个事件中进行Controls.Add()的添加,否则你这个程序永远只生成的是一个Label --------------------编程问答--------------------
定义label的时候,记得加上:label.Visable=true; --------------------编程问答--------------------
namespace WindowsFormsApplication4
{
private System.Windows.Forms.Label lab;//这里定义
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
//不在窗体上拖控件,自己写一个方便一些
System.Windows.Forms.Timer timer1=new Timer();
timer1.Start();
timer1.Interval = 1000;
timer1.Tick += new EventHandler(timer1_Tick);
lab=new Label();
lab.Location=new Point(50,50);
this.Controls.Add(lab); //要显示在窗体上则加上
}
}
private void timer1_Tick(object sender, EventArgs e)
{
lab.Location = new Point(lab.Location.X+10, lab.Location.Y);
}
}
}
补充:.NET技术 , C#