Xin đề bài tập lập trình ứng dụng wpf

Dạ e hiểu r ạ. A cho e hỏi luôn ạ. Sender vó ý nghĩa là gì ạ. E tìm hiểu trên mạng mà k hiểu lắm

Trong một sự kiện, hoặc một delegate được phát sinh, sender là đối tượng chứa/tạo ra sự kiện, delegate tương ứng.

1 Like

Vâng e vẫn ứ hiểu gì luôn

bạn phải tìm mấy cái code example ấy, lấy về chạy đi chạy lại mấy lần , đặt breakpoint debug các kiểu xem từng dòng nó hoạt động thế nào là hiểu liền :yum: ngày xưa mình toàn thế. Lý thuyết nhiều cái nó trừu tượng lắm.

1 Like

Ví dụ khi click vào cái nút thì xuất hiện sự kiện Click. Trong hàm xử lý click có sender và e.
sender chính là cái nút.
e là nội dung liên quan đến sự kiện click.

Giống như gửi mail, sender là địa chỉ người gửi, e là nội dung mail.

1 Like

Đơn giản, bạn thử đặt sự kiện KeyDown là System.Windows.MessageBox.Show(sender.ToString()) với hoặc là System.Windows.MessageBox.Show(e.Key.ToString()) là hiểu liền mà :slight_smile:

1 Like

Dạ
E thấy họ thường sender 1 cái control nào đó vào 1 biến rồi mới làm tiếp, họ làm trên biến đó luôn. Như thế có phải là cấp quyền truy cập vài control đó k ạ

void HàmSựKiện(object sender, EventAgr e) là công thức chung. Chẳng hạn Form1 có sự kiện MouseDown nhé:
=>

Form1.MouseDown += ahjhj; //Thường thì khi tạo bằng cách chọn event thì là Form1_MouseDown
void ahjhj(object sender, MouseButtonEventArg e){...}

thì sender là Form1, e là cái sự kiện được ghi lại khi MouseDown xảy ra với Form1

1 Like

Vâng. Tiện a cho e hỏi cái timer với nuneric của wpf phải tự design ạ

Timer thì đầy ra không phải viết lại.
Còn cái Numeric thì tự design cũng được. Cho nó lạ :))

1 Like

Cái timer phải dùng dispachtimer phải không ạ
Nếu dùng dispatchtiner thì lại gặp 1 vấn để khá lớn ạ

Vấn đề gì thế ???

Phải build 1 cái tick riêng để nó chạy pk ạ. Cái tick có 1 biến là thời gian
Nếu nhập thời gian vào cái biến đó bằng textbox nó phải convert mà convert thì không hoạt động ở ngoài cái hàm build tick

Nói khó hiểu lắm a. Phải thấy a mới dễ hiểu vấn đề

Quả that là chả hiểu gì @@.
Dùng thấy Timer hay DispatcherTimer đều OK.

DispatcherTimer tim;
void Start(){
    tim = new DispatcherTimer(Priority.Background);
    tim.Interval = new TimeSpan(0,0,1);
    tim.Tick+=Tim_Tick;
    tim.Start();
}

int c=0;
private void Tim_Tick(object sender, EventArgs e) {
       c++;
       this.Title = c.ToString();
}

private void SetTime(){
     int sec = 1;
     if(int.tryParse(TextBox.Text,out sec)) tim.Interval = new TimeSpan(0,0,sec);
}

Chẳng biết vấn đề nằm ở đâu @@.

1 Like

E biết ngu ở đâu rồi. E không xài hàm setime a ạ. Mà a ơi phải để setime() trên time_tick chứ

Haizzz. Ngôn ngữ biên dịch thì trước khi thực thi nó nạp tất cả các hàm rồi mới chạy ham main. Trên dưới gì vậy?

1 Like

Hàm SetTime đó mình chỉ viết ra để thay đổi interval của timer từ giá trị nhập vào một TextBox.
Trong C# nó không yêu cầu tuyệt đối hàm/biến nào phải khai báo trước sau.

1 Like

a dương ơi e vẫn k làm được ạ
a quẳng file project cho e được không ạ
mò mẫm mãi luôn ạ

đây là 3 loại Timer:
System.Threading.DispatcherTimer
System.Timer.Timer
System.Threading.Timer

Mà diễn đàn không upload được =.=

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?