![]() |
سورس پیشنهاد دهنده کلمات در سی شارپ - نسخهی قابل چاپ +- انجمن های تخصصی علوم رایانه و هنرهای دیجیتال (https://www.forum.cgaria.com) +-- انجمن: رایانه (https://www.forum.cgaria.com/forum-236.html) +--- انجمن: برنامه نویسی | طراحی وب (https://www.forum.cgaria.com/forum-22.html) +---- انجمن: برنامه نویسی (https://www.forum.cgaria.com/forum-26.html) +----- انجمن: c# | سیشارپ (https://www.forum.cgaria.com/forum-87.html) +----- موضوع: سورس پیشنهاد دهنده کلمات در سی شارپ (/thread-606.html) |
سورس پیشنهاد دهنده کلمات در سی شارپ - Mohsen Omidvar - 27-06-2014 یکی از مشکلات بسیار مهم در ورود اطلاعات در بیشتر برنامه های طراحی شده ، خطای انسانیِ چند بار وارد کردن اطلاعات هست. یکی از راه حل های جلوگیری از این کار، چک کردن مشخصه وارد شده توسط کاربر است. اما در این روش کاربر پس از وارد کردن کامل اطلاعات از وجود این مشخصه مطلع می شود. این روش وقت کاربر را هدر داده و باعث تقابل بیشتر کاربر با برنامه می شود. اما روش بهتری برای جلوگیری از این کار وجود دارد. در دات نت وقتی از کنترل ComboBox استفاده می کنیم، اگر خصیصه DropDownStyle بر روی DropDown تنظیم شده باشد، با وارد کردن هر کاراکتر در ComboBox لیست تمام آیتم هایی که با آن کاراکتر شروع می شوند به عنوان پیشنهاد نشان داده می شود. اما در مورد کنترل تکست باکس برای این کار ۲ روش وجود دارد. یک روش استفاده از AutoComplete هست (که برخی از کامپوننت ها از این خصیصه پشتیبانی نمی کنند) و دیگری ساخت دستی این روش برای تکست باکس و هر کنترل دیگری است. در این روش من از دیتابیس نمونه Northwind و SQLServer و LINQ To SQL استفاده کردم. برای ساخت پیشنهاد دهنده کلمات در سی شارپ اول یک کنترل تکست باکس بر روی فرم بگذارید. سپس نام آن را به txtName تغییر دهید. با استفاده از کد های زیر اول یک نمونه از دیتابیس و یک ListBox می سازیم : کد: Control focused; کد: myList = new ListBox(); در تابع TextChanged کنترل تکست باکس کد زیر را وارد می کنیم: کد: private void txtName_TextChanged(object sender, EventArgs e) کد: private String[] GetSuggestions(string part) در آخر هم برای اینکه وقتی کاربر بر روی یک نام در ListBox کلیک کرد، نام کامل در تکست باکس نمایش داده شود از کد زیر استفاده می کنیم: کد: void myList_DoubleClick(object sender, EventArgs e) |