2013-01-15 13 views
13

Trong một TextBox tôi đang theo dõi các thay đổi văn bản. Tôi cần kiểm tra văn bản trước khi thực hiện một số nội dung. Nhưng tôi chỉ có thể kiểm tra văn bản cũ trong thời điểm này. Làm thế nào tôi có thể nhận được Văn bản mới?Làm thế nào để có được văn bản MỚI trong TextChanged?

private void textChanged(object sender, EventArgs e) 
{ 
    // need to check the new text 
} 

Tôi biết .NET Framework 4.5 có lớp TextChangedEventArgs mới nhưng tôi phải sử dụng .NET Framework 2.0.

+0

Bạn đang sử dụng biểu mẫu web hoặc giành biểu mẫu? – Stokedout

Trả lời

11

Lấy giá trị MỚI

Bạn chỉ có thể sử dụng Text tài sản của TextBox. Nếu sự kiện này được sử dụng cho nhiều hộp văn bản sau đó bạn sẽ muốn sử dụng các tham số sender để có được đúng TextBox kiểm soát, như vậy ...

private void textChanged(object sender, EventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    if(textBox != null) 
    { 
     string theText = textBox.Text; 
    } 
} 

Lấy giá trị OLD

Đối với những người tìm kiếm để có được giá trị cũ, bạn sẽ cần phải giữ đường của chính mình. Tôi sẽ đề nghị một biến đơn giản mà bắt đầu ra như trống rỗng, và những thay đổi ở phần cuối của mỗi sự kiện:

string oldValue = ""; 
private void textChanged(object sender, EventArgs e) 
{ 
    TextBox textBox = sender as TextBox; 
    if(textBox != null) 
    { 
     string theText = textBox.Text; 

     // Do something with OLD value here. 

     // Finally, update the old value ready for next time. 
     oldValue = theText; 
    } 
} 

Bạn có thể tạo điều khiển TextBox của riêng bạn mà kế thừa từ được xây dựng trong một, và thêm chức năng bổ sung này, nếu bạn dự định sử dụng nó rất nhiều.

+5

Tôi có thể thề chỉ một lát trước đây tôi đã chỉ thấy phiên bản cũ của Văn bản trong sự kiện này. Bây giờ Văn bản được thay đổi TRƯỚC KHI sự kiện. Vì vậy, câu hỏi là dư thừa ngay bây giờ. – Bitterblue

+2

Làm thế nào để có được giá trị cũ thay thế? – Joel

1

Có một cái nhìn tại textbox events như KeyUp vv KeyPress Ví dụ:

private void textbox_KeyUp(object sender, KeyEventArgs e) 
{ 
    // Do whatever you need. 
} 

Có lẽ những có thể giúp bạn đạt được những gì bạn đang tìm kiếm.

0

Ngay cả với cũ hơn .net fw 2.0 bạn vẫn nên có giá trị mới và cũ trong eventArgs nếu không có trong thuộc tính textbox.text chính nó kể từ khi sự kiện được kích hoạt sau và không trong quá trình thay đổi văn bản.

Nếu bạn muốn thực hiện nội dung trong khi văn bản đang được thay đổi, hãy thử sự kiện KeyUp thay vì thay đổi.

-1
private void stIDTextBox_TextChanged(object sender, EventArgs e) 
{   
    if (stIDTextBox.TextLength == 6) 
    { 
     studentId = stIDTextBox.Text; // Here studentId is a variable. 

     // this process is used to read textbox value automatically. 
     // In this case I can read textbox until the char or digit equal to 6. 
    } 
} 
Các vấn đề liên quan