PDA

View Full Version : تغییر نکردن رنگ تکست باکس در کلاس



pooria_googooli
چهارشنبه 23 آذر 1390, 16:56 عصر
سلام دوستان . من یک کلاس به اسم validate درست کردم که میاد چک میکنه اطلاعات وارد شده درست وارد شده اند یا نه . مثلا اون جا هایی که باید عدد باشه عدد وارد شده یا نه . یا اونجا هایی که نباید خالی باشه پر شده یا نه . در همین حین میگم اگر مثلا این تکست باکس خالی بود رنگش را عوض کن . ولی عوض نمیکنه .
class Validate1
{
public Boolean status;

public Boolean MyClass(Form MyForm)
{
status = true;
foreach (Control ctrl in MyForm.Controls)
{
if (ctrl is GroupBox)
{
foreach (Control tb in ctrl.Controls)
{
if (tb is TextBox)
{
TextBox newtxt = null;
newtxt = (TextBox)tb;
if (newtxt.Name.Substring(3, 1) == "N")
{
if (newtxt.Text.Trim().Length == 0)
{

newtxt.BackColor = Color.BlueViolet;
status = false;
}
else
{
newtxt.BackColor = Color.White;
}
}
if (newtxt.Name.Substring(4, 1) == "I")
{
bool containsLetter = false;
string Number = newtxt.Text.Trim();
for (int i = 0; i < Number.Length; i++)
{
if (!char.IsNumber(Number[i]))
{
containsLetter = true;
}
}
if (containsLetter)
{
newtxt.BackColor = Color.Chocolate;
status = false;
}
}
}
}
}


}
return status;
}
}

Parham.D
پنج شنبه 24 آذر 1390, 06:52 صبح
سلام. من کد شما را امتحان کردم، در هر دو صورت (هر دو شرط) رنگ پشت زمینه textbox را عوض میکنه!! کد کار میکنه.

pooria_googooli
پنج شنبه 24 آذر 1390, 08:18 صبح
پس چرا به من جواب نمیده ؟ من اینجوری ازش استفاده میکنم .
Form tel = new Telephoni();
var valid = new Validate1();
Boolean statuse = valid.Validate(ref tel);

if (statuse == false)
{
MessageBox.Show("اطلاعات وارد شده اشتباه است ");
return;
}
اگر شرط ها برقرار نباشه پیغام messagbox میاد ولی رنگ عوض نمیشه .

Parham.D
پنج شنبه 24 آذر 1390, 20:17 عصر
نحوه ارسال فرم به کلاسی که شما قرار دادی برای من آشنا نیست. من فرم را که یک TextBox داره به کلاس به صورت ساده و عادی ارسال کردم و اگر TextBox خالی یا دارای عدد نباشه رنگ پست زمینه TextBox عوض میشه. من فرم را به صورت This ارسال کردم. MessageBox ربطی به شروط کلاس نداره، بلکه بر اساس خروجی کلاس کار میکنه. فکر کنم نحوه ارسال فرم به کلاس در برنامه شما مشکل داشته باشه. شاید کلاس، فرم شما را به درستی تشخیص نمیده. وقتی از فرم یک دونه جدید میسازید با فرم جاری که در حال کار هست فرق داره.

zarrinnegar
پنج شنبه 24 آذر 1390, 21:42 عصر
من یه کد میزارم امیدوارم که دوستان ازش استفاده کنن
یه تست بگیر
نیازی به چک کردن هیچ چی نیست
اگه عدد وارد بشه یه properti داره به اسم digit که از اون استفاده میکنید
اگه watermark رو true کنید و یک نوشته توش ست کنید اگه کاربر اطلاعاتی رو وارد نکنه اون نوشته نمایش داده میشه میشه رنگش هم عوض کرد
البته یه سری کار دیگه هم انجام میده

فقط نظراتتون رو بگید تا کاملتر بشه


using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
namespace mohsen_csharp
{
[DefaultEvent("ValueTextChangedEvent"), DefaultProperty("ValueText")]
public class WaterMarkBox : TextBox
{
public double Digit
{
get
{
double d = 0;
double.TryParse(Text, out d);
return d;
}
set
{
Text = value.ToString();
}

}
//constructor
public WaterMarkBox()
{
this.WaterMarkColor = Color.DarkGray;
this.WaterMarkText = "click here";
this.ValueColor = Color.Black;
this.ValueText = "";
this.EnableWaterMark = true;
}
//fields
private bool _valueOrWaterMarkToText;
private string _valueText;
private Color _valueColor;
private string _waterMarkText;
private Color _waterMarkColor;
private bool _enableWaterMark;
//properties
[Browsable(false)]
public bool HasValue
{
get
{
return !string.IsNullOrEmpty(this.ValueText);
}
}
public string ValueText
{
get { return _valueText; }
set
{
if (this.ValueText != value)
{
ValueTextChangedEventArgs e = new ValueTextChangedEventArgs();
e.OldValue = _valueText;
this._valueText = value;
this.OnValueTextChanged(e);
if (e.Cancel)
{
this._valueText = e.OldValue;
this.SetText();
int pos = this.ValueText.Length;
if (pos < 0) pos = 0;
this.SelectionStart = pos;
}
else
this.SetText();
}
}
}
[DefaultValue(typeof(Color), "Color.Black")]
public Color ValueColor
{
get { return this._valueColor; }
set
{
if (this.ValueColor != value)
{
this._valueColor = value;
this.OnValueColorChanged(new EventArgs());
this.SetText();
}
}
}
[DefaultValue("Click here")]
public string WaterMarkText
{
get { return _waterMarkText; }
set
{
if (this.WaterMarkText != value)
{
_waterMarkText = value;
this.OnWaterMarkTextChanged(new EventArgs());
this.SetText();
}
}
}
[DefaultValue(typeof(Color),"Color.DarkGray")]
public Color WaterMarkColor
{
get { return this._waterMarkColor; }
set
{
if (this.WaterMarkColor != value)
{
this._waterMarkColor = value;
OnWaterMarkColorChanged(new EventArgs());
this.SetText();
}
}
}
[DefaultValue(true)]
public bool EnableWaterMark
{
get { return this._enableWaterMark; }
set
{
this._enableWaterMark = value;
this.OnEnableWaterMarkChanged();
}
}
[Browsable(false), DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)]
public override string Text
{
get
{
return base.Text;
}
set
{
base.Text = value;
}
}
[Browsable(false), DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)]
public override Color ForeColor
{
get
{
return base.ForeColor;
}
set
{
base.ForeColor = value;
}
}
//events
public event EventHandler<ValueTextChangedEventArgs> ValueTextChangedEvent;
public event EventHandler<EventArgs> ValueColorChangedEvent;
public event EventHandler<EventArgs> WaterMarkTextChangedEvent;
public event EventHandler<EventArgs> WaterMarkColorChangedEvent;
public event EventHandler<EventArgs> EnableWaterMarkChangedEvent;
[Browsable(false), DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)]
public new event EventHandler TextChanged;
[Browsable(false), DesignerSerializationVisibility(DesignerSerializat ionVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)]
public new event EventHandler ForeColorChanged;
//methods
protected void SetText()
{
this._valueOrWaterMarkToText = true;
if (this.HasValue || !this.EnableWaterMark)
{
this.ForeColor = this.ValueColor;
this.Text = this.ValueText;
}
else
{
this.ShowWaterMarkText();
}
this._valueOrWaterMarkToText = false;
}
protected void ShowWaterMarkText()
{
this._valueOrWaterMarkToText = true;
if (!this.Focused)
{
this.ForeColor = this.WaterMarkColor;
this.Text = this.WaterMarkText;
}
else
{
this.ForeColor = this.ValueColor;
this.Text = this.ValueText;
}
this._valueOrWaterMarkToText = false;
}
protected void OnValueTextChanged(ValueTextChangedEventArgs e)
{
if (this.ValueTextChangedEvent != null)
ValueTextChangedEvent(this, e);
}
protected void OnValueColorChanged(EventArgs e)
{
if (this.ValueColorChangedEvent != null)
this.ValueColorChangedEvent(this, e);
}
protected void OnWaterMarkTextChanged(EventArgs e)
{
if (this.WaterMarkTextChangedEvent != null)
this.WaterMarkTextChangedEvent(this, e);
}
protected void OnWaterMarkColorChanged(EventArgs e)
{
if (this.WaterMarkColorChangedEvent != null)
this.WaterMarkColorChangedEvent(this, e);
}
protected void OnEnableWaterMarkChanged()
{
this.SetText();
if (this.EnableWaterMarkChangedEvent != null)
this.EnableWaterMarkChangedEvent(this, new EventArgs());
}
protected override void OnForeColorChanged(EventArgs e)
{
base.OnForeColorChanged(e);
if (this.ForeColorChanged != null)
this.ForeColorChanged(this, new EventArgs());
if (!this._valueOrWaterMarkToText)
this.ValueText = this.Text;
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
if (this.TextChanged != null)
TextChanged(this, new EventArgs());
if (!this._valueOrWaterMarkToText)
this.ValueText = this.Text;
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
SetText();
}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
SetText();
}
protected override void OnCreateControl()
{
base.OnCreateControl();
SetText();
}
}

public class ValueTextChangedEventArgs:EventArgs
{
public ValueTextChangedEventArgs(){ }
public bool Cancel { get; set; }
public string OldValue { get; set; }
}
}