当前位置:编程学习 > C#/ASP.NET >>

帮忙求助关于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(); 

定义在外面

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);
     

   }
   }
}
--------------------编程问答-------------------- 如果需要让Lab显示在窗体中,需要添加


this.Controls.Add(this.lab);
--------------------编程问答-------------------- 嗯 楼上正解,想让他显示在哪个容器就把他Add到哪个容器里 --------------------编程问答--------------------  Label lab=new Label();

你把他放在方法内部定义,怎么可能在另一个方法中调用到呢!!我倒!!! --------------------编程问答-------------------- 你最好定义label的name来区别label是哪个!!并且在  private void Form1_KeyDown(object sender, KeyEventArgs e)这个事件中进行Controls.Add()的添加,否则你这个程序永远只生成的是一个Label --------------------编程问答--------------------
引用 2 楼 hklinfeng 的回复:
如果需要让Lab显示在窗体中,需要添加

C# code

this.Controls.Add(this.lab);

定义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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,