30/09/2018, 17:06

[Solved] Gọi và gán dữ liệu cho Label từ Form trong Class

Mọi người cho mình hỏi là mình có 1 form có name là frmPlay trong form có label có tên là lblScore, giờ mình có 1 class trong đó có biến int Score mình muốn gán giá trị của biến này vào text của label.

Mình đã khởi tạo form trong class bằng code sau:

frmPlay play=new frmPlay();

và dùng code này để gán giá trị cho text của label:

 play.lblScore.Text = Score.ToString();

nhưng gặp lỗi runtime là khi run nó không chạy frmPlay luôn. Không biết sai ở chỗ nào vậy mọi người tư vấn hộ mình với.

Phạm Hoàng Tuấn viết 19:19 ngày 30/09/2018

là khi run nó không chạy frmPlay luôn

Tức là bạn muốn Show nó lên??? Bạn thử :

frmPlay play=new frmPlay();
play.lblScore.Text = Score.ToString();
play.Showdialog(); 

Làm giàu, làm giàu, làm giàu..... viết 19:06 ngày 30/09/2018

mình không show form lên được bạn.

Phạm Hoàng Tuấn viết 19:07 ngày 30/09/2018

Vậy bạn bị lỗi nào ??? là form không show lên được hay sao bạn ?
hay là show lên được mà k gán text cho lblScore được ?

Làm giàu, làm giàu, làm giàu..... viết 19:21 ngày 30/09/2018

mình không show form lên được bạn.

Làm giàu, làm giàu, làm giàu..... viết 19:16 ngày 30/09/2018

mình có hàm show form rồi, chạy ổn

Phạm Hoàng Tuấn viết 19:14 ngày 30/09/2018

ok, vậy bây giờ bạn thử làm thế này xem.

frmPlay play=new frmPlay();
play.Tag=Score.ToString()
play.Showdialog(); 

Trong form frmPlay, bạn bắt sự kiện FormLoad, trong hàm đó bạn viết :

lblScore.Text =this.Tag.ToString());
Làm giàu, làm giàu, làm giàu..... viết 19:15 ngày 30/09/2018

mình thử code của bạn nhưng cũng không được, mình xem lại thì mình khởi tạo nhầm vị trí nên nó không show form, giờ form show rồi nhưng không gán text được cho lblScore

Làm giàu, làm giàu, làm giàu..... viết 19:08 ngày 30/09/2018

Mình đã giải quyết được. Thanks.

Thành Phạm viết 19:10 ngày 30/09/2018

Uầy, giải quyết kiểu gì đấy ạ , trước em cũng dính lỗi kiểu này nhưng hình như nó liên quan đến cross- thread hay delegate gì đó thì phải

Làm giàu, làm giàu, làm giàu..... viết 19:14 ngày 30/09/2018

mình khởi tạo trong class GameController như vầy:

private frmPlay play=new frmPlay();    
public ABC(frmPlay parent)
 {  play=parent;
    play.lblScore.Text = Score.ToString();
 }

rồi qua bên frmplay khởi tạo class GameController trong frmPlay:

private GameController _gameControl;
void CreateGame
{  
  _gameControl = new GameController(this);
}

Thế là xong. Lúc đầu cũng tưởng dùng delegate hay thread nhưng đơn giản hóa lại thôi.

Bài liên quan
0