Изменение цвета текстового поля в зависимости от его содержимого - PullRequest
0 голосов
/ 10 августа 2009

В приложении VS2005 C ++ Form есть адаптер таблицы и текстовое поле, в котором отображаются данные из определенного столбца. То, что я хочу сделать, это изменить его цвет в зависимости от того, является ли содержимое> 0 или <0. Я попытался добавить это: </p>

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;

Он находится в заголовке формы (вся программа представляет собой графический интерфейс, так что почти все там ...)

Редактировать: Возможно, если я проверю значение источника привязки данных, оно будет работать, но как я могу это сделать? (Существует ли this->sumclosedpnlBindingSource->returnvalue(CSum) или что-то подобное?)

Ответы [ 2 ]

3 голосов
/ 10 августа 2009

Что вы подразумеваете под этим:

… изменился его цвет в зависимости от того, является ли содержимое>)…

Чтобы получить доступ к содержимому текстового поля, используйте его свойство Text. Чтобы проверить числовое значение, сначала необходимо преобразовать его в целое число (или другой тип числа):

int value = System::Int32::Parse(CSumTextBox->Text);

if (value < 0)
    CSumTextBox->ForeColor = System::Drawing::Color::Red;
0 голосов
/ 10 августа 2009
int val = -1;
if(!Int32::TryParse(CSumTextBox->Text) || val != 0)
{
   CSumTextBox->ForeColor = System::Drawing::Color::Red;
}

Это проверит, что значение в текстовом поле фактически преобразуется в целое число, и что значение не равно 0.

...