hỏi lạ nhỉ dùng even mouseclick
Làm sao để nhận biết được 1 Control(chẳng hạn loại Button) đã bị click hay chưa ? Thanks.
hỏi lạ nhỉ dùng even mouseclick
Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/
mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
http://www.tinhte.vn/threads/691731/
Mouseclick là method để thực hiện việc gì đó khi xảy ra sự kiện click chuột. đây không phải cái tớ cần.
Nói thế này cho dễ hiểu :chẳng hạn tớ có 100 button. Bây giờ tớ click vào button thứ 40 trong dãy Button trên. Tớ muốn biết là button nào đã bị clicked để xử lý các nhiệm vụ tương ứng với nó.
Nếu chỉ có 2,3 button thì nhiệm vụ đơn giản, lúc đó chỉ cần dùng mấy cái biến boolean cho mỗi button là xong. Khi đó button nào bị clicked, ta set cái biến bool đi với nó=true, các biến bool đi với các button còn lại ta set= false. Từ đó khi kiểm tra sự kiện liên quan đến button bị click, ta chỉ cần kiểm tra xem cái biến bool đi với nó được set=true hay chưa.
-Vấn đề khi số button lớn thì thế nào(như 100 cái chẳng hạn), khi ấy pp trên ko hiệu quả lắm(vì cồng kềnh)
Giá mà trong MSDN có method "bool button.Clicked"(thực tế ko có đâu nha) thì hay biết mấy, tiếc rằng tìm không thấy và ko có cái method nào tương tự nó.
Ai đó có giải pháp nào không?
Bạn thử dùng chỉ 1 hàm xử lý chung cho tất cả các sự kiện của các button xem. Dùng thuộc tính name để phân biệt giữa các button. Ngoài ra, nếu cách xử lý cho từng button phức tạp thì chắc phải dùng đến kế thừa.
Đã được chỉnh sửa lần cuối bởi kaka211 : 22-07-2007 lúc 07:26 PM.
cho dù có cái Clicked đấy thật thì bạn định xử lý trong event nào
Thế này nhé, chẳng hạn tớ có một chương trình Paint đơn giản. Các button trên có các nhiệm vụ khác nhau: vẽ Line, vẽ Ellipse, vẽ Rectange, vẽ tự do, vẽ đa giác ....Có một hàm riêng để xử lý kiểu vẽ, nó sẽ dựa vào các cờ của các button trên để biết được user đang chọn kiểu vẽ nào. Có nghĩa là chỉ cần dùng 1 method để xử lý tất cả các kiểu vẽ , căn cứ vào cờ của các button.
Vấn đề làm sao là xác định cái flag đó (=true/false)- khi mà số button ngày càng nhiều lên . (Khi 1 cờ được thiết lập true thì tất cả những cái còn lại =false)
Đã được chỉnh sửa lần cuối bởi nampt : 23-07-2007 lúc 11:02 AM.
Nếu như theo cách xử lý của bạn ở trên thì dùng biến bool làm gì. Dùng một biến số nguyên id (id=1 vẽ line, id=2 vẽ ...)
Bạn đặt ID của các button đó. Rồi dùng vòng lặp để find control đã bị click hay chưa.Ý tưởng của mình là vậy
Geomatics
Em nghĩ khó khăn của tác giả ở đây là không phải ở chỗ không kiểm tra đựơc nút có bị ấn hay không mà là phải kiểm tra nhiều nút. Thông thường để kiểm tra một nút có bị ấn hay không ta sẽ đặt một biến bool trong event của nó, việc này làm bằng tay nên không khả thi với nhiều nút. Vì vậy giải pháp của em là tạo một event handler chung xử lý sự kiện click của tất cả các button, để nhận dạng các nút sẽ sử dụng thuộc tính Tag, trong đó lưu một giá trị định danh duy nhất. Giải pháp này em thấy cũng có nhiều anh đề cập tới ở trên rồi.
Đây là mã lệnh
PHP Code:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Button newbt;
for (int i = 1; i <= 5; i++)
{
newbt = new Button();
newbt.Tag = i.ToString();
newbt.Text =i.ToString() ;
newbt.Width = 50;
newbt.Location = new System.Drawing.Point(i * newbt.Width,0);
this.Controls.Add(newbt);
newbt.Click += new EventHandler(newbt_click);
}
}
void newbt_click(object sender, EventArgs e)
{
MessageBox.Show("Ban vua nhan vao button " + ((Button)sender).Text );
}
}
}