PDA

View Full Version : سوال: اجرا نشدن رویداد TextChanged در این کنترلی که از Textbox ارث برده



nader.golab
پنج شنبه 29 بهمن 1394, 18:54 عصر
سلام.
این کنترل که textbox هستش و برای اینکه سه رقم سه رقم جدا کند اعداد رو نوشته شده.ولی یک اشکالی که داره اینکه رویداد TextChenge کار نمی کنه و تو این کداش یه چیزی کم داره که من نمی دونم.اگه میشه برام تصحیح کنین و یادم بدین.ممنون



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace _dll
{
class CurrencyTextbox : TextBox
{
bool discreteNumeric = true;
public string MyText
{
get
{
if (discreteNumeric)
return base.Text.Replace(",", "");
else
return base.Text;
}
set
{
base.Text = value;
}
}
protected override void OnTextChanged(EventArgs e)
{
if (discreteNumeric)
{
string strText = this.MyText;
for (int i = strText.Length - 3; i > 0; i = i - 3)
{
strText = strText.Insert(i, ",");
}
this.SelectionStart = strText.Length + 1;
this.MyText = strText;
}
}

public bool DiscreteNumeric
{
get
{
return discreteNumeric;
}
set
{
discreteNumeric = value;
}
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (!((int)e.KeyChar >= 48 && (int)e.KeyChar <= 57) && e.KeyChar != 8)
e.KeyChar = char.MinValue;
}
}
}

nader.golab
جمعه 30 بهمن 1394, 05:17 صبح
برای تعریف رویداد باید چی کار کرد?

nader.golab
جمعه 30 بهمن 1394, 07:12 صبح
از مدیر این بخش می خوام که کمک کنه این مسئله برطرف بشه.

چه طوری این کد رو دستکاری کنم که رویداد textchenge هم قعال بشه.


protected override void OnTextChanged(EventArgs e) {
if (discreteNumeric)
{
string strText = this.MyText;
for (int i = strText.Length - 3; i > 0; i = i - 3)
{
strText = strText.Insert(i, ",");
}
this.SelectionStart = strText.Length + 1;
this.MyText = strText;
}
}




البته من override رو که حذف می کنم رویداد textchenge فعال می شه.اما دیگه این کد کار نمی کنه.

fool66
جمعه 30 بهمن 1394, 08:05 صبح
مطمئن نیستم ولی فکر کنم باید دستور

base.OnTextChanged(e);

بنویسی

nader.golab
جمعه 30 بهمن 1394, 08:47 صبح
مطمئن نیستم ولی فکر کنم باید دستور

base.OnTextChanged(e);

بنویسی

ممنون واقعاااااا.عالییییییی. درست بود.خیلی ممنون

vB.N3T
جمعه 30 بهمن 1394, 10:29 صبح
اینم یه کد ساده تر

if (txt1.Text == string.Empty)
{
return;
}
else
{
txt1.Text = string.Format("{0:0,00}", double.Parse(txt1.Text));
txt1.Select(txt1.Text.Length, 0);
}