根据文本框的内容更改文本框的颜色

时间:2009-08-10 16:42:11

标签: c++ winforms textbox colors

我在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)或类似的东西是否存在?)

2 个答案:

答案 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.