无法将计时器投射到文本框数组 |窗体
Can Not Cast Timer to Array of Textboxes | Winform
我正在尝试实现一个每 10 毫秒运行一次的计时器,以确定用户是否填写了某个字段。本质上,如果填充了一个文本框(最多 10 个),则会启用一个按钮。如果他们填写,然后删除输入,计时器将确定并禁用按钮。可以在下面看到:
private: System::Void StartBtn_Tick(System::Object^ sender, System::EventArgs^ e) {
int count = 0;
array < TextBox ^ > ^ textbox = { vPeak1, vPeak2, vPeak3, vPeak4, vPeak5, vPeak6, vPeak7, vPeak8, vPeak9, vPeak10 };
TextBox ^ current = (TextBox ^)sender;
for (int i = 0; i < 10; i++) {
if (textbox[i]->Text != L"") count++;
else count--;
}
此代码适用于单个文本框,但是一旦我实现了文本框数组,程序立即崩溃并在第 4 行出现异常。'count' 的值为 0。
"'无法将类型 'System.Windows.Forms.Timer' 的对象转换为类型 'System.Windows.Forms.TextBox'。'""
根据您发布的代码,
private: System::Void StartBtn_Tick(System::Object^ sender, System::EventArgs^ e)
这似乎是计时器的 Tick
处理程序。 sender
是生成导致调用处理程序的事件的对象,因此在这种情况下
sender
将是计时器本身而不是文本框。您不能将 sender
转换为 TextBox,因为它不是 TextBox,而是一个 Timer。
尽管如此,您仍然可以在不使用 sender
的情况下完成同样的事情,因为您根本不会使用它。
array < TextBox ^ > ^ textbox = { vPeak1, vPeak2, vPeak3, vPeak4, vPeak5, vPeak6, vPeak7, vPeak8, vPeak9, vPeak10 };
int count = 0;
for (int i = 0; i < 10; i++) {
if (textbox[i]->Text != L"") count++;
}
// Test the final value of count here and do whatever you need
我正在尝试实现一个每 10 毫秒运行一次的计时器,以确定用户是否填写了某个字段。本质上,如果填充了一个文本框(最多 10 个),则会启用一个按钮。如果他们填写,然后删除输入,计时器将确定并禁用按钮。可以在下面看到:
private: System::Void StartBtn_Tick(System::Object^ sender, System::EventArgs^ e) {
int count = 0;
array < TextBox ^ > ^ textbox = { vPeak1, vPeak2, vPeak3, vPeak4, vPeak5, vPeak6, vPeak7, vPeak8, vPeak9, vPeak10 };
TextBox ^ current = (TextBox ^)sender;
for (int i = 0; i < 10; i++) {
if (textbox[i]->Text != L"") count++;
else count--;
}
此代码适用于单个文本框,但是一旦我实现了文本框数组,程序立即崩溃并在第 4 行出现异常。'count' 的值为 0。
"'无法将类型 'System.Windows.Forms.Timer' 的对象转换为类型 'System.Windows.Forms.TextBox'。'""
根据您发布的代码,
private: System::Void StartBtn_Tick(System::Object^ sender, System::EventArgs^ e)
这似乎是计时器的 Tick
处理程序。 sender
是生成导致调用处理程序的事件的对象,因此在这种情况下
sender
将是计时器本身而不是文本框。您不能将 sender
转换为 TextBox,因为它不是 TextBox,而是一个 Timer。
尽管如此,您仍然可以在不使用 sender
的情况下完成同样的事情,因为您根本不会使用它。
array < TextBox ^ > ^ textbox = { vPeak1, vPeak2, vPeak3, vPeak4, vPeak5, vPeak6, vPeak7, vPeak8, vPeak9, vPeak10 };
int count = 0;
for (int i = 0; i < 10; i++) {
if (textbox[i]->Text != L"") count++;
}
// Test the final value of count here and do whatever you need