[ad_1]
我有两个按钮(读取和写入),每个读取和写入有 5 个文本框。 我想比较读取和写入之间的值,如果匹配,文本框将显示绿色,否则显示红色,但当我重新单击读取按钮时,它没有改变颜色
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; } }
我尝试过的:
我尝试使用调用方法并将颜色设置为空,但它对颜色更改也没有响应。
if (textBox.InvokeRequired) { textBox.Invoke((MethodInvoker)delegate { textBox.BackColor = Color.Empty; }); }
解决方案1
Invoke 是无关紧要的:仅当您使用主 GUI 线程以外的线程时才需要它。 调用“将代码移回”GUI 线程,以便安全地访问控件。
如果您的颜色没有改变,有多种可能的原因 – 例如,如果 totalCount
为零或负数时,颜色不会改变。
如果无法完整运行您的代码,我们就无法判断 – 而且我们无法做到这一点,因为我们无法访问您的系统。
所以,这将取决于你。
幸运的是,您有一个可用的工具可以帮助您了解正在发生的情况:调试器。 如果您不知道如何使用它,那么快速搜索“Visual Studio 调试器”应该可以为您提供所需的信息。
在函数的第一行放置一个断点,然后通过调试器运行代码。 然后查看您的代码和数据并找出应该手动发生的情况。 然后单步执行每一行,检查您期望发生的情况是否确实发生。 如果不是,那就是你遇到了问题,你可以回溯(或再次运行它并更仔细地查看)以找出原因。
抱歉,我们无法为您做到这一点 – 您是时候学习一项新的(并且非常非常有用)技能了:调试!
[ad_2]
コメント