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

在另一个类中修改主窗口的Label.Text属性的问题

大家好!我刚学C#,有个小问题想请教下各位。问题如标题,我想在Palette.cs类中改变主窗体FrmTetris.cs中Label.Text的属性,但修改不成功,希望各位帮帮忙,先谢谢了!两个类的部分代码如下:

FrmTetris.cs类中的关键代码:
private Palette p;
p = new Palette(paletteWidth, paletteHeight, rectPix, paletteColor, Graphics.FromHwnd(pbRun.Handle), Graphics.FromHwnd(lblReady.Handle),this);
p.Start();


Palette.cs类中的关键代码:
class Palette
  {
  private int _width = 15;//画板宽度
  private int _height = 25;//画板高度
  private Color[,] coorArr;//固定数组
  private Color disapperColor;//背景色
  private Graphics gpPaltte;//活动画板
  private Graphics gpReady;//下一个样式画板
  private BlockGroup bGroup;//生产机
  private Block runBlock;//正在活动
  private Block readyBlock;//下一个
  private int rectPix;//单元格像素
  FrmTetris f;

public Palette(int x,int y,int pix,Color dColor,Graphics gp,Graphics gr,FrmTetris f1)
  {
    
  _width = x;
  _height = y;
  coorArr = new Color[_width,_height];
  disapperColor = dColor;
  gpPaltte = gp;
  gpReady = gr;
  rectPix = pix;
  f = f1;
}


//这里还有一个定时器在CheckAndOverBlock()。。。
public void Start()//开始
        {
     //初始化定时器
            timerBlock = new System.Timers.Timer(_timeSpen);
            timerBlock.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);//实际使用了委托
            timerBlock.AutoReset = true;//每隔800MS都会执行OnTimedEvent
            timerBlock.Start();
        }
        private void OnTimedEvent(object source,ElapsedEventArgs e){
            CheckAndOverBlock();
            Down();
        }



 public void CheckAndOverBlock()//检查转块是否到底
{
//省去部分代码
CheckAndDelFullRow() ;
}




 private void CheckAndDelFullRow() //检查并删除满行
  {
//省去部分代码
Fen();
}



public void Fen()//加分
  {
    
  string score = f.t_score.Text;
  int fen = Convert.ToInt32(score) + 50;
  f.t_score.Text = Convert.ToString(fen);
  } --------------------编程问答-------------------- System.Timers为什么不使用form命名空间的Timers
跨ui线程操作,应该使用代理,不应该直接操作 --------------------编程问答-------------------- 跨线程操作要用委托 --------------------编程问答-------------------- 有一种方案,在Form1_Load()方法中加一句代码:
 Control.CheckForIllegalCrossThreadCalls = false;
你试试这个 --------------------编程问答-------------------- --------------------编程问答-------------------- 同意ls
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,