我在VS2005 C ++表单应用程序中有一个表适配器和一个显示特定列数据的文本框。我想要做的是在内容是> 0还是<0时改变颜色。我尝试添加这个:
if(this->CSumTextBox->TabIndex<0)
{
this->CSumTextBox->ForeColor = System::Drawing::Color::Red;
}
但它不起作用......(我真的不相信TabIndex是正确的功能,但它似乎是唯一关闭的) 请帮忙
编辑:CSum是双倍的。 这是CsumTextBox的完整代码:
//
// CSumTextBox
//
this->CSumTextBox->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left));
this->CSumTextBox->BackColor = System::Drawing::SystemColors::Window;
this->CSumTextBox->DataBindings->Add((gcnew System::Windows::Forms::Binding(L"Text", this->sumclosedpnlBindingSource, L"CSum", true)));
this->CSumTextBox->Location = System::Drawing::Point(214, 632);
this->CSumTextBox->Name = L"CSumTextBox";
this->CSumTextBox->Size = System::Drawing::Size(86, 20);
this->CSumTextBox->TabIndex = 7;
它在Form Header中(整个程序是一个GUI,所以几乎所有东西都在那里......)
编辑:也许如果我检查数据绑定源的值它会起作用,但我该怎么做呢?
(this->sumclosedpnlBindingSource->returnvalue(CSum)
或类似的东西是否存在?)
答案 0 :(得分:3)
这是什么意思:
......如果内容是&gt;),其颜色会发生变化......
要访问文本框的内容,请使用其Text
属性。要测试数值,首先需要将其转换为整数(或其他数字类型):
int value = System::Int32::Parse(CSumTextBox->Text);
if (value < 0)
CSumTextBox->ForeColor = System::Drawing::Color::Red;
答案 1 :(得分:0)
int val = -1;
if(!Int32::TryParse(CSumTextBox->Text) || val != 0)
{
CSumTextBox->ForeColor = System::Drawing::Color::Red;
}
这将检查文本框中的值是否实际转换为整数,并且该值不是0.