PDA

View Full Version : سوال: یادآوری مقادیر وارد شده در TextBox



MasoudAdmin
جمعه 08 آذر 1398, 17:32 عصر
با سلام
من در فرم لاگین یک TextBox به عنوان نام کاربری دارم. حالا می خوام هر کاربری که یک بار نام کاربریش رو در این TextBox وارد کرد، موقع لاگین در مرتبه های بعدی هنگامی که کاربر شروع به تایپ کرد، مقادیر ورود شده از قبل رو به کاربر نشان دهد تا کاربر دیگر مجبور به تایپ مجدد همه موارد نباشد.:متفکر:
ممنون

the king
جمعه 08 آذر 1398, 18:46 عصر
با سلام
من در فرم لاگین یک TextBox به عنوان نام کاربری دارم. حالا می خوام هر کاربری که یک بار نام کاربریش رو در این TextBox وارد کرد، موقع لاگین در مرتبه های بعدی هنگامی که کاربر شروع به تایپ کرد، مقادیر ورود شده از قبل رو به کاربر نشان دهد تا کاربر دیگر مجبور به تایپ مجدد همه موارد نباشد.:متفکر:
ممنون

اول اون TextBox تون رو بردارید بندازید دور. بدرد کار ما نمیخوره. بجاش یک ComboBox بذارید.
در تنظیمات ComboBox هم این وارد رو وارد کنید (دوست داشتید در پنجره Properties و نخواستید در کد برنامه موقع بالا اومدن فرم)


private void Form1_Load(object sender, EventArgs e)
{
comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
comboBox1.DropDownStyle = ComboBoxStyle.Simple;
}


حالا موقعی که فرم باز میشه، باید لیست کاربری رو بذاریم داخل ComboBox که موقع تایپ کردن خودکار پیشنهاد کنه.
اما اول باید محل ذخیره شدن لیست کاربری رو مشخص کنیم. در منوی Project ویژوال استدیو اون گزینه ...project name} Properties} رو انتخاب کنید که project name اسم پروژه شما است.
در زبانه Settings اش در آخرین سطر لیست در ستون Name روی Settings دوبار کلیک کنید و تا به حالت ویرایش دربیاد و بنویسید Usernames و Enter رو بزنید تا عنوان Usernames از نوع string ایجاد بشه. پروژه رو ذخیره کنید و برگردید سر کد فرم تون. در دو جا باید به این Usernames مون رجوع کنیم. یکی وقتی فرم تازه داره نمایش داده میشه یعنی رخداد Shown :


private void Form1_Shown(object sender, EventArgs e)
{
var users = Properties.Settings.Default.Usernames.Split(new char[] { '\t' }
, StringSplitOptions.RemoveEmptyEntries);
comboBox1.Items.Clear();
comboBox1.Items.AddRange(users);
}


و دفعه دومی وقتی که نام کاربری وارد شده رو تایید کردید و لاگین انجام شده و احتمال میدیم که این نام کاربر در لیست جدید ئه و باید برای دفعات بعدی ذخیره بشه :


var username = comboBox1.Text.Trim();
var users = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
foreach (string user in comboBox1.Items)
{
users[user] = 0;
}
if (users.ContainsKey(username) == false)
{
users.Add(username, 0);
comboBox1.Items.Add(username);
comboBox1.AutoCompleteSource = AutoCompleteSource.None;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
}
var usernames = new string[users.Count];
users.Keys.CopyTo(usernames, 0);
Properties.Settings.Default.Usernames = string.Join("\t", usernames);
Properties.Settings.Default.Save();

MasoudAdmin
شنبه 09 آذر 1398, 07:44 صبح
با سلام
با سپاس فراوان. الان فقط یه مشکلی هست. بار دوم کار نام کاربری رو میزنم تو لیست پیشنهاداتش میاره ولی وقتی انتخاب می کنم ComboBox خالی میشه و دوباره باید تا آخر نام کاربری رو تکمیل کنم!!:افسرده:

MasoudAdmin
دوشنبه 11 آذر 1398, 10:05 صبح
با سلام
با سپاس فراوان. الان فقط یه مشکلی هست. بار دوم کار نام کاربری رو میزنم تو لیست پیشنهاداتش میاره ولی وقتی انتخاب می کنم ComboBox خالی میشه و دوباره باید تا آخر نام کاربری رو تکمیل کنم!!:افسرده:


سلام. کسی نیست؟ مشکلی که گفتم رو چجوری می تونم رفع کنم؟:ناراحت::افسرده:

ROSTAM2
دوشنبه 11 آذر 1398, 11:32 صبح
سلام. کسی نیست؟ مشکلی که گفتم رو چجوری می تونم رفع کنم؟:ناراحت::افسرده:

شاید مشکل از کدنویسی مجزایی هست که داری!!!؟ چون بعد از نوشت یوخدش اگه هرکدوم انتخاب کنی (کلیک بشه) باکس بعنوان متن انتخاب می کنه...

MasoudAdmin
سه شنبه 12 آذر 1398, 07:21 صبح
شاید مشکل از کدنویسی مجزایی هست که داری!!!؟ چون بعد از نوشت یوخدش اگه هرکدوم انتخاب کنی (کلیک بشه) باکس بعنوان متن انتخاب می کنه...

با سلام. دقیقا کدهایی که دوست عزیز (the king)گفته بودن رو نوشتم. دیگه نمی دونم چکار کنم؟:گریه:

ROSTAM2
سه شنبه 12 آذر 1398, 07:53 صبح
دقیقا کدهایی که دوست عزیز (the king)گفته بودن رو نوشتم

سلام. شما فقط به این کد نیاز داری:comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
بقیه اش دیگه اضافه کردن اسامی کاربریه که به Items اضافه می کنی که از نظر من TextBox داشته باشی قشنگ تره! و این خصوصیت رو : comboBox1.AutoCompleteSource; برابر با cUSTOMsOURCE بشه و خصوصیت customSourceList هستکه آیتم ها رو دریافت می کنه...

MasoudAdmin
سه شنبه 12 آذر 1398, 09:09 صبح
سلام. شما فقط به این کد نیاز داری:comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
بقیه اش دیگه اضافه کردن اسامی کاربریه که به Items اضافه می کنی که از نظر من TextBox داشته باشی قشنگ تره! و این خصوصیت رو : comboBox1.AutoCompleteSource; برابر با cUSTOMsOURCE بشه و خصوصیت customSourceList هستکه آیتم ها رو دریافت می کنه...

سلام. تو کدها پشت کلید ok موقع لاگین این مورد رو گذاشتم. جای دیگه ای هم باید ست کنم؟

mandagarana
سه شنبه 12 آذر 1398, 10:10 صبح
با سلام
من در فرم لاگین یک TextBox به عنوان نام کاربری دارم. حالا می خوام هر کاربری که یک بار نام کاربریش رو در این TextBox وارد کرد، موقع لاگین در مرتبه های بعدی هنگامی که کاربر شروع به تایپ کرد، مقادیر ورود شده از قبل رو به کاربر نشان دهد تا کاربر دیگر مجبور به تایپ مجدد همه موارد نباشد.:متفکر:
ممنون


عزیز چرا خودتو خسته میکنی.بهترین کار استفاده از کامپوننت هست.من خودم از کامپوننت تلریک استفده کردم.داده ها رو از دیتابیس میخونم.وقتی کاربر مثلا حرف A رو وارد کرد اتوماتیک وار خودش فیلتر میکنه.کدش هم خیلی خیلی سادست.

MasoudAdmin
سه شنبه 12 آذر 1398, 11:59 صبح
عزیز چرا خودتو خسته میکنی.بهترین کار استفاده از کامپوننت هست.من خودم از کامپوننت تلریک استفده کردم.داده ها رو از دیتابیس میخونم.وقتی کاربر مثلا حرف A رو وارد کرد اتوماتیک وار خودش فیلتر میکنه.کدش هم خیلی خیلی سادست.

ممنون. چون نمیخواستم از کامپوننت استفاده کنم این روش رو رفتم. مشکلش رو هم فهمیدم. باید خاصیت DropDwonStyle رو به حالت DropDown تغییر میدادم.

ROSTAM2
سه شنبه 12 آذر 1398, 12:01 عصر
تو کدها پشت کلید ok موقع لاگین این مورد رو گذاشتم. جای دیگه ای هم باید ست کنم؟

برای ذخیره اسامی کاربرا که هرکجا می خوای ذخیره کنی با همون کلید ok بعد از لاگین باشه ولی برای بازیابی و ست کردنش با customsource باید هنگام load پنجره اسامی فراخوانی بشند.

شهابسلطانی
جمعه 29 آذر 1398, 23:15 عصر
سلام
دوست عزیز بهتره نام کاربر رو در ریجیستری ذخیره کنی
و بعد موقع لاگین توی لود فرم لاگین مقدار ریجیستری رو برگردونی
خیلی هم ساده هست
هم اینکه اخرین یوزری که رو سیستم حاضر وارد بشه رو همیشه نگه میداره
نیاز بود بفرما تا کدش رو برات بذارم