Màu nền của hộp văn bản winform C# không thay đổi với câu lệnh if-else

lập trình


Tôi có hai nút (đọc và viết), mỗi nút đọc và viết có 5 hộp văn bản. Tôi muốn so sánh giá trị giữa đọc và ghi, nếu khớp, hộp văn bản sẽ hiển thị màu xanh lục và màu đỏ, nhưng nó không thay đổi màu khi tôi nhấp lại vào nút đọc

string[] rTextBoxes = { textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text};
string[] wTextBoxes = { textBox15.Text, textBox16.Text, textBox17.Text, textBox18.Text, textBox19.Text};
var totalCount = readTextBoxes.Count();
for (int i = 0; i < totalCount; i++)
{
    if (rTextBoxes[i] != wTextBoxes[i])
    {
        foreach (var control in this.Controls)
        {
            var textBox = control as TextBox;
            if (textBox != null)
            {
                textBox.ReadOnly = false;
            }
        }
        textBox15.BackColor = Color.Red;
        textBox16.BackColor = Color.Red;
        textBox17.BackColor = Color.Red;
        textBox18.BackColor = Color.Red;
        textBox19.BackColor = Color.Red;

    }
    else
    {
        textBox15.BackColor = Color.Green;
        textBox16.BackColor = Color.Green;
        textBox17.BackColor = Color.Green;
        textBox18.BackColor = Color.Green;
        textBox19.BackColor = Color.Green;
    }

}

Những gì tôi đã thử:

Tôi cố gắng sử dụng phương thức gọi và làm cho màu trống, nhưng nó cũng không có phản hồi về màu đã thay đổi.

if (textBox.InvokeRequired)
{
    textBox.Invoke((MethodInvoker)delegate
    {
        textBox.BackColor = Color.Empty;
    });
}

Giải pháp 1

Lệnh gọi không liên quan: nó chỉ được yêu cầu khi bạn đang sử dụng một luồng khác với luồng GUI chính. Gọi “di chuyển mã” trở lại luồng GUI để truy cập các điều khiển một cách an toàn.

Nếu màu của bạn không thay đổi thì có một số lý do có thể xảy ra – ví dụ: nếu totalCount bằng 0 hoặc âm, màu sắc sẽ không bị thay đổi.
Chúng tôi không thể biết nếu không chạy toàn bộ mã của bạn – và chúng tôi không thể làm điều đó vì chúng tôi không có quyền truy cập vào hệ thống của bạn.

Vì vậy, nó sẽ tùy thuộc vào bạn.
May mắn thay, bạn có sẵn một công cụ giúp bạn tìm hiểu điều gì đang xảy ra: trình gỡ lỗi. Nếu bạn không biết cách sử dụng nó thì “Trình gỡ lỗi Visual Studio” nhanh chóng của Google sẽ cung cấp cho bạn thông tin bạn cần.

Đặt điểm dừng trên dòng đầu tiên trong hàm và chạy mã của bạn thông qua trình gỡ lỗi. Sau đó, hãy xem mã và dữ liệu của bạn và tìm hiểu xem điều gì sẽ xảy ra theo cách thủ công. Sau đó, thực hiện từng bước một để kiểm tra xem điều bạn mong đợi xảy ra có chính xác là điều đã xảy ra hay không. Nếu không, đó là lúc bạn gặp sự cố và bạn có thể theo dõi lại (hoặc chạy lại và xem xét kỹ hơn) để tìm hiểu lý do.

Xin lỗi, nhưng chúng tôi không thể làm điều đó cho bạn – đã đến lúc bạn học một kỹ năng mới (và rất, rất hữu ích): gỡ lỗi!

コメント

タイトルとURLをコピーしました