PDA

View Full Version : حرفه ای: textBox ویژه



reza_ali202000
سه شنبه 19 خرداد 1394, 22:24 عصر
این تکست باکس 6 تا خاصیت داره:
0. وقتی فوکاس میشه خودکار به زبان فارسی تغییر پیدا میکنه.
1. وقتی فوکاس میشه تغییر رنگ میده.
2. وقتی فوکاس میشه یه خورده بزرگتر میشه.
3. نوع ورودیش رو میشه مشخص کرد
4. با اینتر به کنترل بعدی میره.
5. وقتی فوکاس میشه کل متن داخلش انتخاب میشه
که مشخصه کار هرکدوم چیه.

خودم از همین برا کل پروژه هام استفاده میکنم.
اگه دیدم دوستان علاقه دارن سورسشو هم میزارم.
لطفا اگه عیب و ایرادی میبینید بگین تا برطرفش کنم.

NasimBamdad
چهارشنبه 20 خرداد 1394, 10:34 صبح
عکس هم ازش بذاری خوب میشه .

NASA's Spaceman
چهارشنبه 20 خرداد 1394, 10:49 صبح
ببخشید ولی به این که نمیگن ویژه کاملا معمولی هست بدون هیچ امکاناتی
ساخت کنترل به چند تا خط چین و رنگ عوض کردن و ... نیست، برا این کار اول از همه سعی کنین دانش تون رو درباره ساخت کنترل افزایش بدین تا بتونین یه چیزی در حد آماتوری بسازین
امیدوارم متوجه منظورم شده باشین
با سپاس Spaceman

محمد آشتیانی
چهارشنبه 20 خرداد 1394, 12:59 عصر
ببخشید ولی به این که نمیگن ویژه کاملا معمولی هست بدون هیچ امکاناتی
ساخت کنترل به چند تا خط چین و رنگ عوض کردن و ... نیست، برا این کار اول از همه سعی کنین دانش تون رو درباره ساخت کنترل افزایش بدین تا بتونین یه چیزی در حد آماتوری بسازین
امیدوارم متوجه منظورم شده باشین
با سپاس Spaceman

سلام
آقای Spaceman
انتقاد الکی کاری نداره که ، گر تو بهتر میزنی بستان بزن!!!
ایشون خوب یا بد کارشون رو اینجا گذاشتن در معرض قضاوت و برای استفاده سایرین و این خیلی خوبه ، شما اگر ایراد فنی به کار ایشون داری میتونی محترمانه بیانش کنی در غیر اینصورت اصلا لزومی به ارسال پست بی محتوا نیست.

ضمنا ، شما از کارهای حرفه ای که انجام دادی اینجا بذار تا دوستان استفاده ببرن از دانش شما

reza_ali202000
چهارشنبه 20 خرداد 1394, 14:11 عصر
ببخشید ولی به این که نمیگن ویژه کاملا معمولی هست بدون هیچ امکاناتی
ساخت کنترل به چند تا خط چین و رنگ عوض کردن و ... نیست، برا این کار اول از همه سعی کنین دانش تون رو درباره ساخت کنترل افزایش بدین تا بتونین یه چیزی در حد آماتوری بسازین
امیدوارم متوجه منظورم شده باشین
با سپاس Spaceman

بنده تلاشمو کردم که خودم و بقیه دوستان نخوان برای هر تکس باس خصوصیات بنویسن. یه چیز آماده باشه استفاده کنن.
حالا این کار به چشم شما بزرگترا نمیاد معذرت من رو پذیرا باشین.
با تشکر

salibsatan
چهارشنبه 20 خرداد 1394, 14:47 عصر
مدیران محترم.پست اسپم نیست.اما واقعا درک نمی کنم چرا بعضیا فقط می خوان تخریب کنن.دوست عزیزی کاری کرده و خواسته کمکی کرده باشه.نه پولی از شما می خواد، نه خدمتی و نه چیزی.رایگان زحمت خودش رو در اختیار بقیه قرار داده.اگر مورد استفاده شما نیست بگذرید.چرا بقیه رو دلسرد می کنین؟از کسی که کاربر دائمی برنامه نویس هست بعیده همچین برخوردی.اصلا درک نمی کنم.

davidrobert
چهارشنبه 20 خرداد 1394, 20:28 عصر
این تکست باکس 6 تا خاصیت داره:
0. وقتی فوکاس میشه خودکار به زبان فارسی تغییر پیدا میکنه.
1. وقتی فوکاس میشه تغییر رنگ میده.
2. وقتی فوکاس میشه یه خورده بزرگتر میشه.
3. نوع ورودیش رو میشه مشخص کرد
4. با اینتر به کنترل بعدی میره.
5. وقتی فوکاس میشه کل متن داخلش انتخاب میشه
که مشخصه کار هرکدوم چیه.

خودم از همین برا کل پروژه هام استفاده میکنم.
اگه دیدم دوستان علاقه دارن سورسشو هم میزارم.
لطفا اگه عیب و ایرادی میبینید بگین تا برطرفش کنم.

دوست عزیز تشکر میکنم واقعا پست خیلی عالی بود که باعث کاهش کد نویسی و سرعت بخشیدن میشه.
با اجازه آقا رضا.
namespace extendedtextbox
{
using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Windows.Forms;

public class TextBoxReza : TextBox
{
private Color bk;
private Color bkfocus;
private type typetextbox;

public TextBoxReza()
{
this.bk = base.BackColor;
base.TextChanged += new EventHandler(this.ExtdTextBox_TextChanged);
base.KeyPress += new KeyPressEventHandler(this.ExtdTextBox_KeyPress);
base.LostFocus += new EventHandler(this.ExtdTextBox_LostFocus);
base.Enter += new EventHandler(this.ExtendTextBox_Enter);
base.KeyDown += new KeyEventHandler(this.TextBoxReza_KeyDown);
this.bkfocus = Color.FromArgb(0xcc, 0xff, 0xbd);
}

private void changelanguge(string lname)
{
foreach (InputLanguage language in InputLanguage.InstalledInputLanguages)
{
if (language.Culture.TwoLetterISOLanguageName == lname)
{
Application.CurrentCulture = language.Culture;
Application.CurrentInputLanguage = language;
}
}
}

private void ExtdTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (this.typetextbox == type.floating)
{
if ((!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) && (e.KeyChar != '.'))
{
e.Handled = true;
}
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
else if (this.typetextbox == type.numeric)
{
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}
else if (this.typetextbox == type.money)
{
if (!(char.IsControl(e.KeyChar) || char.IsDigit(e.KeyChar)))
{
e.Handled = true;
}
}
else if (((this.typetextbox != type.general) && (this.typetextbox == type.nonumeric)) && (char.IsDigit(e.KeyChar) || (e.KeyChar == '.')))
{
e.Handled = true;
}
}

private void ExtdTextBox_LostFocus(object sender, EventArgs e)
{
this.BackColor = this.bk;
base.Width -= 6;
base.Left += 3;
}

private void ExtdTextBox_TextChanged(object sender, EventArgs e)
{
if ((this.typetextbox == type.money) && (this.Text != ""))
{
this.Text = Convert.ToDecimal(this.Text).ToString("#,#", CultureInfo.InvariantCulture);
}
base.Select(this.Text.Length, 0);
}

private void ExtendTextBox_Enter(object sender, EventArgs e)
{
this.changelanguge("fa");
this.bk = base.BackColor;
this.BackColor = this.bkfocus;
base.Width += 6;
base.Left -= 3;
base.Select(0, this.Text.Length);
}

private void TextBoxReza_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{tab}");
}
}

[DisplayName("Type"), Category("Extended Properties"), Description("sets type TextBox"), Browsable(true)]
public type typetxt
{
get
{
return this.typetextbox;
}
set
{
this.typetextbox = value;
}
}

[Browsable(true), Category("Extended Properties"), Description("set Backcolor Focuse"), DisplayName("BackColorFocus")]
public Color WaterMarkBackColor
{
get
{
return this.bkfocus;
}
set
{
this.bkfocus = value;
base.OnTextChanged(new EventArgs());
}
}

public enum type
{
general,
nonumeric,
numeric,
money,
floating
}
}
}

reza_ali202000
پنج شنبه 21 خرداد 1394, 16:06 عصر
دوستان کسی دیگه نظری نداره؟
به نظرتون از یه تکس باکس دیگه غیر از این موارد چه انتظاراتی میشه داشت؟

Mahmoud Zaad
پنج شنبه 21 خرداد 1394, 16:53 عصر
سلام
کارهای اصلی همین هاست ولی موارد زیر رو هم میتونی اضافه کنی
1- اعتبارسنجی کد ملی
2- اعتبارسنجی ایمیل
3- یک خاصیت که مقدار عددی رو برگردونه، مثلا وقتی عدد سه رقم سه رقم جدا شد اگه بخوایم عدد رو در دیتابیس ذخیره کنیم نیازی به جداکننده ها نداریم.
4- اصولاً باید یک لیست از زبان ها باشه که بشه انتخاب کرد نه اینکه فقط فارسی
...
یه تاپیک هست در این مورد فکر کنم اگه سوپر تکست باکس رو سرچ کنی پیدا می کنی

ebrahim.rayatparvar
پنج شنبه 21 خرداد 1394, 18:25 عصر
این تکست باکس 6 تا خاصیت داره:
0. وقتی فوکاس میشه خودکار به زبان فارسی تغییر پیدا میکنه.
1. وقتی فوکاس میشه تغییر رنگ میده.
2. وقتی فوکاس میشه یه خورده بزرگتر میشه.
3. نوع ورودیش رو میشه مشخص کرد
4. با اینتر به کنترل بعدی میره.
5. وقتی فوکاس میشه کل متن داخلش انتخاب میشه
که مشخصه کار هرکدوم چیه.

خودم از همین برا کل پروژه هام استفاده میکنم.
اگه دیدم دوستان علاقه دارن سورسشو هم میزارم.
لطفا اگه عیب و ایرادی میبینید بگین تا برطرفش کنم.

سلام مهندس جان.

من از روی عکسی که گذاشتی دارم میگم که خسته نباشی. من خودم اوایل برنامه نویسی عذاب این چنینی که برای هر کنترل کد بزنم رو کشیدم میدونم چه قدر سخته و بعدش برای خودم کنترل سفارشی طراحی کردم مثل شما که اینجا به صورت رایگان هم گذاشتید تا دوستان استفاده کنند. این کار شما میدونم چقدر سخته تا یه کنترل سفارشی کنی که باگ نداشته باشه یا بهتر بگم کمترین باگ رو داشته باشه. خسته نباشی داری مهندس.



ببخشید ولی به این که نمیگن ویژه کاملا معمولی هست بدون هیچ امکاناتی
ساخت کنترل به چند تا خط چین و رنگ عوض کردن و ... نیست، برا این کار اول از همه سعی کنین دانش تون رو درباره ساخت کنترل افزایش بدین تا بتونین یه چیزی در حد آماتوری بسازین
امیدوارم متوجه منظورم شده باشین
با سپاس Spaceman

مهندس جان این کار شاید برای شما کوچک باشه ولی برای خیلی بزرگ و پر محتواست. شما هم تو پست ها دیده بودم که همچن کنترل سفارشی که نمونه گرافیکی بود طراحی کردین حال به نظر شما اینه که کار گرافیکی شما بهتره و این کار نه پس چرا راه و روش درست را نمی گید تا دوستان بتونن کامپوننتی بهتر برای خود بسازند همه اینجا جمع شدن برای آموزش و انتقال اطلاعات به هم نه کوچک کردن دوست خودمون.

reza_ali202000
چهارشنبه 03 تیر 1394, 20:21 عصر
به نظرم بیشتر کامپوننت هایی که نیاز به کد نویسی داره رو به صورت ماژول در بیاریم و همینجا بزاریم.
مثلا یه نفر روی دیتاگرید کار کنه.
یا مثلا روی فرم اصلی.
یا تقویم و از انیجور چیزا.
که کد نویسی رو کمتر کنیم.

alireza264
چهارشنبه 03 تیر 1394, 21:28 عصر
به نظرم بیشتر کامپوننت هایی که نیاز به کد نویسی داره رو به صورت ماژول در بیاریم و همینجا بزاریم.
مثلا یه نفر روی دیتاگرید کار کنه.
یا مثلا روی فرم اصلی.
یا تقویم و از انیجور چیزا.
که کد نویسی رو کمتر کنیم.
سلام
کار قشنگی کردی
اما:دو پشنهاد
1-در keydown- keypress از Sender استفاده کن و همه تکست باکس های مشابه رو باهاش چک کن
2- کلید enter برای حرکت وقتی جواب میده که کنترل به ترتیب ساخته شده باشن که در ساخت پروژه ها کم پیش میاد. آرایه ای از نام کنترل ها بساز و یه متغیر از نوع control و در رویداد Enter با ActivControl بهش مقدار بده و براساس ترتیب آرایه focus کن

ghasem110deh
چهارشنبه 03 تیر 1394, 22:02 عصر
سلام به همه ...
خیلی هم عالیه ، دستتون درد نکنه !
--------------------------------------
البته من پست بقیه دوستان رو دقیق نخوندم ، پس پیشنهادم رو میدم : (من خودم خیلی دوست دارم)
اگه واسش watermark بزاری من خودم بجای تکست باکس dev ازش استفاده میکنم
.
.
.
و البته هایلایت هم خوبه (بجای تغییر رنگ بک گراند) بوردر تغییر کنه ، با کمی سایه و حاشیه :چشمک:

systam
پنج شنبه 04 تیر 1394, 01:50 صبح
سلام
احسنت افرین عالی
پیشنهاد من اینه
1 - قابلیت transprant بکگراند
2 - انتخاب عکس برای پس زمینه تکس

موفق باشی

davidrobert
پنج شنبه 04 تیر 1394, 13:06 عصر
سلام به همه ...
خیلی هم عالیه ، دستتون درد نکنه !
--------------------------------------
البته من پست بقیه دوستان رو دقیق نخوندم ، پس پیشنهادم رو میدم : (من خودم خیلی دوست دارم)
اگه واسش watermark بزاری من خودم بجای تکست باکس dev ازش استفاده میکنم
.
.
.
و البته هایلایت هم خوبه (بجای تغییر رنگ بک گراند) بوردر تغییر کنه ، با کمی سایه و حاشیه :چشمک:

مهندس جان شما برای اینکه حالت watermark براش بنویسید کافی هستش که از دیوکامپوننت استفاده کنی یعنی به جای اینکه تو کلاس بنویسی Textbox بیا بنویس TextBoxX که از کامپوننت های دیو کامپوننت رو ویژه کنی و این امکانات رو به اون اضافه کنید که واترمارک هم داشته باشه.

ghasem110deh
جمعه 05 تیر 1394, 11:29 صبح
یه چیز دیگه هم این که بهتره وقتی نوع money استفاده میشه ... موقع درج توی دیتابیس بصورت رشته ذخیره نشه !
که عملیات ریاضی رو بدون کد نویسی اضافه انجام بدیم .

davidrobert
جمعه 05 تیر 1394, 11:47 صبح
یه چیز دیگه هم این که بهتره وقتی نوع money استفاده میشه ... موقع درج توی دیتابیس بصورت رشته ذخیره نشه !
که عملیات ریاضی رو بدون کد نویسی اضافه انجام بدیم .
وقتی نوع فیلد رو تو دیتابیس decmial قرار بدید خودش موقع ذخیره عداد اعشار رو ور میداره و عدد رو ذخیره میکنه و موقع نمایش اگه نوع فیلد اعشاری قرار داده بودید درست نمایش میده. و نیاز نیست بگی موقع ذخیره عدد اعشار وردار و موقع نمایش نمایش فقط باید نوعش رو بزارید اعشاری که عداد سه رقم جدا کنه.

ghasem110deh
جمعه 05 تیر 1394, 12:11 عصر
وقتی نوع فیلد رو تو دیتابیس decmial قرار بدید خودش موقع ذخیره عداد اعشار رو ور میداره و عدد رو ذخیره میکنه و موقع نمایش اگه نوع فیلد اعشاری قرار داده بودید درست نمایش میده. و نیاز نیست بگی موقع ذخیره عدد اعشار وردار و موقع نمایش نمایش فقط باید نوعش رو بزارید اعشاری که عداد سه رقم جدا کنه.

موقع جمع و تفریق یا ضرب و تقسیم و ... به مشکل نمیخوریم !!؟
جمع و تفریق اعداد اعشاری ...

davidrobert
جمعه 05 تیر 1394, 15:28 عصر
نه چون ما جمع تفریق رو در دات نت انجام میدیم نه در اسکیول سرور بخاطر همین با مشکل بر خورد نمیکنیم. و این طوری عداد اعشار رو جمع میبندم.
private void CalcTxtSum()
{
decimal mablghGhabelPerdakhtKolDecimal = default(decimal);
decimal mablaghPerdakhte = default(decimal);
decimal Monde = default(decimal);
try
{
mablghGhabelPerdakhtKolDecimal = Convert.ToDecimal(TxtMablghKolGhabelPerdakht.Text. ToString());
}
catch
{
mablghGhabelPerdakhtKolDecimal = 0;
}
try
{
mablaghPerdakhte = Convert.ToDecimal(TxtMablaghPerdakhte.Text.ToStrin g());
}
catch
{
mablaghPerdakhte = 0;
}
try
{
Monde = Convert.ToInt64(TxtMonde.Text.ToString());
}
catch
{
Monde = 0;
}
try
{
//TxtMondeCopay.Text = Convert.ToDecimal(mablaghPerdakhte - mablghGhabelPerdakhtKolDecimal).ToString();
TxtMonde.Text = Convert.ToDecimal(mablghGhabelPerdakhtKolDecimal - mablaghPerdakhte).ToString();
}
catch
{
TxtMonde.Text = "" + Monde;
}
}

reza_ali202000
شنبه 06 تیر 1394, 13:03 عصر
یکی از دوستان هم کار بسیار خوب و تمیزی انجام دادن که لیبیل رو خیلی کاربردی کردن
http://barnamenevis.org/showthread.php?499650-%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-label-%DA%A9%D9%87-%D9%85%D8%AA%D9%86%D8%B4-%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C-%D8%AD%D8%A7%D8%B4%DB%8C%D9%87%28OutLine%29-%D9%87%D8%B3%D8%AA%D8%B4
دوستان اگه لینک کاربردی مثلا دیتاگرید یا باتم و غیره که احساس میکنید بدرد برنامه نویسی تجاری میخوره لینکشو همینجا بزارید. تا کم کم تبدیل به یه تایپک مرجع بشه.

reza_ali202000
دوشنبه 08 تیر 1394, 06:10 صبح
اینم یه باتم خوب و کاربردی که کار دوست عزیزمون هست.
http://barnamenevis.org/showthread.php?500097-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA-Button-%D8%A7%D9%86%DB%8C%D9%85%D8%B4%DB%8C%D9%86