PDA

View Full Version : طریقه کار با checkedListBox چگونه است ؟



aradrobo
شنبه 18 آذر 1391, 20:08 عصر
من برنامه ی زیر را برای ساخت دفترچه تلفن ساخته ام . به یک سری مشکلاتی برخوردم .
این برنامه به این صورت کار می کند که ابتدا در یک بخش نام و شماره را ذخیره می کند در یک فایل .
زمانی که ذخیره انجام شود ، نام شخص در چک لیست باکس نیز اضافه می شود . حال من می خواهم کاری کنم که وقتی روی نام طرف در چک لیست باکس تیک زده شد ، شماره تماس شخص در لیست باکس به نمایش در بیاید . برنامه زیر بدون اینکه تیک زده شود این عملیات اتفاق می افتد . یعنی با انتخاب و آبی شدن در چک لیست باکس . لطفاً راهنمایی کنید . با تشکر :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Tell_book_new
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
try
{
FileStream Arad = new FileStream("TellBook.txt", FileMode.Append, FileAccess.Write, FileShare.None);
StreamWriter rt = new StreamWriter(Arad);
if (textBox1.Text != "" && textBox2.Text != "")
{
rt.WriteLine(textBox1.Text);
rt.WriteLine(Convert.ToDouble(textBox2.Text));
rt.WriteLine("-------------------------");
MessageBox.Show("ثبت شد");
checkedListBox1.Items.Add(textBox1.Text);
textBox1.Text = "";
textBox2.Text = "";
textBox1.Focus(); // کرسر مؤس را روی تکس باکس 1 می آورد
}
rt.Close();
}
catch
{
MessageBox.Show("لطفاً با دقت وارد کنید");
}
}

private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
{


}

private void checkedListBox1_SelectedValueChanged(object sender, EventArgs e)
{
FileStream Arad = new FileStream("TellBook.txt", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader rt = new StreamReader(Arad);

while (!rt.EndOfStream)
{
string name = rt.ReadLine();
double number = Convert.ToDouble(rt.ReadLine());
string khatchin = rt.ReadLine();
if (name == checkedListBox1.SelectedItem.ToString())
{
listBox1.Items.Add(Convert.ToString(number));
}

}
rt.Close();
}

private void Form1_Load(object sender, EventArgs e)
{
FileStream Arad = new FileStream("TellBook.txt", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader rt = new StreamReader(Arad);

while (!rt.EndOfStream)
{
string name = rt.ReadLine();
double number = Convert.ToDouble(rt.ReadLine());
string khatchin = rt.ReadLine();

checkedListBox1.Items.Add(name);

}
rt.Close();
}

SHD.NET
شنبه 18 آذر 1391, 20:39 عصر
به جای این کد توی خط 60 :
if (name == checkedListBox1.SelectedItem.ToString())
باید این کد رو بنویسی :
if (name == checkedListBox1.GetItemChecked.ToString())

:چشمک:\\\موفق باشید///:چشمک:

aradrobo
شنبه 18 آذر 1391, 21:38 عصر
به جای این کد توی خط 60 :
if (name == checkedListBox1.SelectedItem.ToString())
باید این کد رو بنویسی :
if (name == checkedListBox1.GetItemChecked.ToString())

:چشمک:\\\موفق باشید///:چشمک:

این کارو کردم . این خطا به من داده می شود ؟
Error 1 'System.Windows.Forms.CheckedListBox.GetItemChecke d(int)' is a 'method', which is not valid in the given context C:\Users\ARAD\Documents\Visual Studio 2010\Projects\Tell book new\Tell book new\Form1.cs 54 45 Tell book new


مشکل از چیست ؟

SHD.NET
شنبه 18 آذر 1391, 22:14 عصر
فهمیدم !!!
این کد رو جایگزین کنید
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == true & name == CheckedListBox1.SelectedItem.ToString) {
ListBox1.Items.Add(CheckedListBox1.SelectedItem.To string);
}

:چشمک:\\\موفق باشید///:چشمک:

aradrobo
یک شنبه 19 آذر 1391, 14:43 عصر
فهمیدم !!!
این کد رو جایگزین کنید
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == true & name == CheckedListBox1.SelectedItem.ToString) {
ListBox1.Items.Add(CheckedListBox1.SelectedItem.To string);
}

:چشمک:\\\موفق باشید///:چشمک:

چطور می توانم وقتی تیک برداشته شد ، شماره ثبت شده اش را پاک کنم ؟

SHD.NET
یک شنبه 19 آذر 1391, 16:09 عصر
بفرما داداش . اینم کد کامل و بدون مشکلش . خودت طبق برنامت جایگزینش کن
کد قبلی این مشکل رو دداشت که اگه یک گزینه که تیک خورده رو دوباره روش کلیک می کردیم ، دوباره میاوردش توی لیست . اما توی این کد این مشکل برطرف شده .

کد حذف از لیست باکس بابرداشتن تیک هم گذاشته شد
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == true) {
for (i = 0; i <= ListBox1.Items.Count; i++) {
ListBox1.SelectedIndex = Conversion.Val(i - 1);
if (ListBox1.Text == CheckedListBox1.Text)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
}

ListBox1.Items.Add(CheckedListBox1.SelectedItem.To String);
}
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == false) {
for (i = 0; i <= ListBox1.Items.Count; i++) {
ListBox1.SelectedIndex = Conversion.Val(i - 1);
if (ListBox1.Text == CheckedListBox1.Text)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
}
}
:لبخند: فک کنم این سخت ترین کدی بود که تاحالا نوشتم :لبخند:

:چشمک:\\\موفق باشید///:چشمک:

aradrobo
سه شنبه 21 آذر 1391, 16:57 عصر
بفرما داداش . اینم کد کامل و بدون مشکلش . خودت طبق برنامت جایگزینش کن
کد قبلی این مشکل رو دداشت که اگه یک گزینه که تیک خورده رو دوباره روش کلیک می کردیم ، دوباره میاوردش توی لیست . اما توی این کد این مشکل برطرف شده .

کد حذف از لیست باکس بابرداشتن تیک هم گذاشته شد
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == true) {
for (i = 0; i <= ListBox1.Items.Count; i++) {
ListBox1.SelectedIndex = Conversion.Val(i - 1);
if (ListBox1.Text == CheckedListBox1.Text)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
}

ListBox1.Items.Add(CheckedListBox1.SelectedItem.To String);
}
if (CheckedListBox1.GetItemChecked(CheckedListBox1.Se lectedIndex) == false) {
for (i = 0; i <= ListBox1.Items.Count; i++) {
ListBox1.SelectedIndex = Conversion.Val(i - 1);
if (ListBox1.Text == CheckedListBox1.Text)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
}
}
:لبخند: فک کنم این سخت ترین کدی بود که تاحالا نوشتم :لبخند:

:چشمک:\\\موفق باشید///:چشمک:

Conversion این را نمی شناسد و خطا می دهد . چه کنم ؟

aradrobo
سه شنبه 21 آذر 1391, 17:02 عصر
لطفاً یک توضیحی هم در مورد نحوه عملکرد برنامه بدهید .

SHD.NET
چهارشنبه 22 آذر 1391, 00:17 صبح
دوست عزیز الان با موبایل هستم
نمتونم توضیح کامل بدم,فردابراتون توضیحات رو منویسم

aradrobo
چهارشنبه 22 آذر 1391, 15:30 عصر
دوست عزیز الان با موبایل هستم
نمتونم توضیح کامل بدم,فردابراتون توضیحات رو منویسم

Conversion این را نمی شناسد و خطا می دهد . چه کنم ؟

SHD.NET
چهارشنبه 22 آذر 1391, 15:40 عصر
دوست عزیز من از Conversion استفاده می کنم . مشکلی نداره . البته فک کنم توی ویژوال 2010 و 2012 جواب نمیده . معادلشو نمدونم . یه سرچ بکن ببین نمتونی معادلشو پیدا کنی

aradrobo
پنج شنبه 23 آذر 1391, 22:30 عصر
دوست عزیز من از Conversion استفاده می کنم . مشکلی نداره . البته فک کنم توی ویژوال 2010 و 2012 جواب نمیده . معادلشو نمدونم . یه سرچ بکن ببین نمتونی معادلشو پیدا کنی

نه چیزی پیدا نکردم . ببین هیچ کتابخونه ای براش تعریف نکردی .

aradrobo
جمعه 24 آذر 1391, 09:59 صبح
یعنی واقعاً کسی چیزی نمی داند ؟

SHD.NET
جمعه 24 آذر 1391, 10:56 صبح
من کتابخونه ای براش تعریف نکردم . از Conversion برای تبدیل رشته ها و متغیرها به هم استفاده میشه . شما هم می تونید با دستوراتی که برای تبدیل متغیرها بلدین اونو تبدیلش کنین . همین

:چشمک:\\\موفق باشید///:چشمک:

aradrobo
جمعه 24 آذر 1391, 11:18 صبح
همانطور که در تصویر می بینید . خطا می دهد . مشکل از چیست ؟

aradrobo
شنبه 25 آذر 1391, 22:06 عصر
لطفاً اگر کسی اطلاعاتی دارد راهنمایی کند . با تشکر

aradrobo
جمعه 01 دی 1391, 17:21 عصر
یعنی کسی در این زمینه کار نکرده است ؟ آخه مگر می شود ؟

aradrobo
چهارشنبه 06 دی 1391, 16:31 عصر
این فایلی که قرار دادم رو دانلود کنید . چیزی هست که ساخته شده . لطفاً اگر می توانید ، برنامه مورد نیازم رو بسازید . با تشکر.

aradrobo
پنج شنبه 07 دی 1391, 19:43 عصر
کسی نمی تونه کمکی بکنه در این زمینه ؟

aradrobo
شنبه 09 دی 1391, 15:38 عصر
من هنوزم منتظر پاسخ دوستان هستم . با تشکر

monazzam
چهارشنبه 20 دی 1402, 06:08 صبح
Conversion این را نمی شناسد و خطا می دهد . چه کنم ؟
ListBox1.Items.Clear();
foreach (object itemChecked in CheckedListBox1.CheckedItems)
{
ListBox1.Items.Add(itemChecked.ToString());


}

ROSTAM2
چهارشنبه 20 دی 1402, 06:55 صبح
ListBox1.Items.Clear();
foreach (object itemChecked in CheckedListBox1.CheckedItems)
{
ListBox1.Items.Add(itemChecked.ToString());


}

این دوستمون که سوال پرسیدن سال 91 ینی 11 سال پیش .
فکر نکنم دیگه هیچ پاسخی بکارشون بیاد.
بهتر بود بدون نقل قول پاسخ می دادید.