PDA

View Full Version : سوال: دسترسی به مقدار اندیس خاصی از listbox



fahmari
سه شنبه 30 آبان 1391, 11:20 صبح
سلام.
خواهشن زودی کمکم کنید. یه برنامه رو خیلی وقته کامل نوشتم فقط به مشکل کوچیک داره که هرکاری میکنم نمیتونم حلش کنم.
میخوام مقدار اولین آیتم listbox رو بریزم توی یه متغیر ولی از هرکدوم از خصوصیت های listbox استفاده می کنم یه چیز دیگه رو برمیگردونه!
مگه این درست نیست ؟

int Key = Convert .ToInt32 ( listBox1.Items.IndexOf (-1 ));
اگه نیست درستش چیه؟؟ :ناراحت:

fahmari
سه شنبه 30 آبان 1391, 11:23 صبح
توی قسمت دیگه ای از برنامم هم باید مقدار اون متغیر رو با آیتم های بعدی listbox مقایسه کنم. ولی بازم نمیشه :( این کد اشتباهه؟؟
for (int i = 1; i <= count ; i++)
{
if (Key == listBox1.Items.IndexOf (i ) )
{
keyIndex =listBox1.SelectedIndex -1;

}
else
{ keyIndex = 0;

}

AmirGhasemi
سه شنبه 30 آبان 1391, 11:28 صبح
سلام
عزيز از اين خط استفاده كن


listBox1.Items[0]


ايعني در مقابل Items داخل يك براكت شماره انديس را بگذار! البته بعدش بايد متناسب جنس آن كست كني!

fahmari
سه شنبه 30 آبان 1391, 11:36 صبح
این کارم کردم ولی خطا میگیره. جلوی items نمیشه شماره اندیس داد :(((

fahmari
سه شنبه 30 آبان 1391, 11:38 صبح
این خطا رو میده :
Error 1 Non-invocable member 'System.Windows.Forms.ListBox.Items' cannot be used like a method.
یعنی اصلن نمیشه اینجوری استفادش کرد!

AmirGhasemi
سه شنبه 30 آبان 1391, 11:56 صبح
اقا من كدش را تست كردم هيچ مشكلي نبود


lsbLessons.Items[0])

fahmari
سه شنبه 30 آبان 1391, 12:00 عصر
اقا من كدش را تست كردم هيچ مشكلي نبود


lsbLessons.Items[0])


واقعا ممنونم الان که دقت کردم فهمیدم اشتیاهم کجاست. انقد این چند وقته صبح تا شب پای سیستم بودم چشام خوب نمیبینه :چشمک: به جای [] ، () گداشته بودم ! :خجالت: شرمنده . خیلی ممنونم

fahmari
سه شنبه 30 آبان 1391, 12:10 عصر
وای بازم مشکل داره :(
کدم اینه :
int Key = Convert .ToInt16 ( listBox1.Items[0]);
ولی این خطا رو میده :
Input string was not in a correct format.

hamidkh
سه شنبه 30 آبان 1391, 12:48 عصر
دوست عزیز بخاطر این که آیتم لیست باکس شما از نوع string هست و شما میخواین به int تبدیلش کنین. بیشتر دقت کنید.

fahmari
سه شنبه 30 آبان 1391, 12:58 عصر
دوست عزیز بخاطر این که آیتم لیست باکس شما از نوع string هست و شما میخواین به int تبدیلش کنین. بیشتر دقت کنید.

خب من که comvert گذاشتم که تبدیلش کنه، یعنی نمی تونه این کارو کنه؟!
من اگه متغیر key رو هم string بگیرم تو ادامه برنامه نمی تونم مقایسه رو انجام بدم درسته؟
پس چجوری این مشکل رو حل کنم؟! :(

fahmari
سه شنبه 30 آبان 1391, 13:02 عصر
آیتم های لیست باکسم عدد هستن. پس باید بتونه تبدیل کنه. درسته؟

hamidkh
سه شنبه 30 آبان 1391, 13:05 عصر
اگر عدد باشن نباد مشکلی وجود داشته باشه.

fahmari
سه شنبه 30 آبان 1391, 13:07 عصر
اگر عدد باشن نباد مشکلی وجود داشته باشه.

عدد هستن پس مشکل چیه؟! :((

moharam1370
سه شنبه 30 آبان 1391, 13:09 عصر
آیتم های لیست باکسم عدد هستن. پس باید بتونه تبدیل کنه. درسته؟

سلام

اگر عدد خیلی بزرگ باشه باید باید با Int32 یا Int64 تبدیل کنید .

fahmari
سه شنبه 30 آبان 1391, 13:13 عصر
سلام

اگر عدد خیلی بزرگ باشه باید باید با Int32 یا Int64 تبدیل کنید .

سلام.
اعدادم بزرگ نیستن ولی اول همون Int32 رو گداشته بودم با این حال همین خطا رو می گرفت !

fahmari
سه شنبه 30 آبان 1391, 13:17 عصر
از همگی دوستان ممنونم. حل شد :))
مشکل از این بود که موقع نمایش یه سری کاراکتر دیگه به اون اعداد اضافه کرده بودم که نمایشش شکیل تر باشه :خجالت:
یه دنیا مرسی از همه

fahmari
سه شنبه 30 آبان 1391, 13:27 عصر
واااااااااااااااااااااای نخیر مثل اینکه این برنامه درست بشو نیس!
دوستان کدم رو میذارم خواهشن راهنمایی کنید که مشکل کجاست. خسته شدم بخدا:گریه:
توسط کد زیر لیست باکس پر مبشه که مشکلی نداره و درست اجرا میشه :

private void button2_Click(object sender, EventArgs e)
{

listBox1.Items.Clear();

int a= Convert.ToInt32 (textBox1.Text );
X.Add (Convert .ToInt32(textBox2 .Text ));
int C =Convert.ToInt32 (textBox3 .Text) ;
int m = Convert .ToInt32 (textBox4 .Text );
int count = Convert.ToInt32(textBox5.Text);

for (int i = 0;i <count ;i ++)
{
int temp= ((Convert .ToInt32(X [i]) * a +C) % m );
X.Add(temp);
}

listBox1.Items.Clear();
for (int k = 1; k < X.Count; k++)
{
listBox1.Items.Add(X[k].ToString());
}




}


تو قسمت بعدی ، به button دیگه وجود داره که باید تو این اعداد تصادفی تولید شده که در لیست باکس قرار دارن، دوره مولدشون رو محاسبه کنه. دوره مولد یعنی بعد از چند عدد تصادفی دوباره همون عدد اول تولید شده. درواقع باید عدد اول لیست باکس رو با اعداد بعدیش مقایسه کنه و جایی که اون عدد تکرار شده اندیس لیست باکس رو برگردونه.
اینم کد این قسمت که همش مشکل داره و نمی تونم حلش کنم : :گریه:

private void button1_Click(object sender, EventArgs e)
{
int Key = Convert .ToInt32 ( listBox1.Items[0]);
int keyIndex;

int count = listBox1.Items.Count;


for (int i = 1; i < count ; i++)
{
if (Key == Convert .ToInt32 ( listBox1.Items[i] ))
{
keyIndex =listBox1.SelectedIndex -1;

}
else
{ keyIndex = 0;

}

label5.Text = Convert.ToString(keyIndex);


}


}




تورو خدا کمکم کنید کلی کار دارم این یه برنامه ساده از کیه وقتمو گرفته حلم نمیشه ! :ناراحت:

fahmari
سه شنبه 30 آبان 1391, 13:30 عصر
راستی X رو به صورت
ArrayList X = new ArrayList();
تعریف کردم

fahmari
سه شنبه 30 آبان 1391, 14:34 عصر
کیــــــــــــــست مـــــــــــــــرا یــــــــــــــــــاری کند ؟! :(((

fahmari
سه شنبه 30 آبان 1391, 15:08 عصر
درستش کردم :لبخندساده: ممنونم از همه