PDA

View Full Version : مرتبط کردن CheckedListBoxبا یه کنترل خاص



k_ce_esf
دوشنبه 24 مرداد 1390, 13:30 عصر
با سلام
در فرمم يک CheckedListBox دارم که درش کد کالاهاي مختلفي که دارم قرار ميگيره،مقاديري که درون اين CheckedListBox قرار ميگيره،در زمان اجراي فرمم با استفاده از مقاديري که در بانکم هست پر ميشه و ممکنه تعداد اين کالا ها بر حسب شرايط مختلف فرق داشته باشه.
مثلا من 5 تا کالا با کدهاي 1 تا 5 دارم که در CheckedListBox قرار ميگيره ،کاربر ميخواد کالاهاي 1و3و5 را انتخاب کنه،در ضمن بتونه تعداد هريک از اين کالاها را هم در يه جايي مشخص کنه که مثلا من از کالاي 1،100 تا دارم،از کالاي 3،300 تا،از کالاي 5،500 تا،و همه اين مقادير هم بايد در بانک ثبت بشه،نميدونم براي اين کار از چه کنترل و چه راهي استفاده کنم !:افسرده:
ممنون ميشم راهنماييم کنيد،خيلي بهش نياز دارم.

k_ce_esf
سه شنبه 25 مرداد 1390, 08:44 صبح
کسی نیست به من کمک کنه؟:گریه:

k_ce_esf
سه شنبه 25 مرداد 1390, 13:28 عصر
خیلی ممنونم از جوابتون.اما دوست عزیز این مقادیر ثایت نیستند که من از قبل در چک لیست باکس قرارشون بدم.تعداد این کالاها میتونه هر مقداری باشه(مثلا از 0 تا 50)اصلا مقدارش مشخص نیست،درواقع باید کاربر این مقدار را بنویسه و بعد این مقدار در بانک ثبت بشه.درواقع میخوام آیتم های مورد نظر را انتخاب کنه،مقدار هر آیتم را هم در یه جای خاص بنویسه و بعد که دکمه ثبت را زد همه این آیتم های انتخاب شده با مقادیر مختلفی که کاربر برای هر آیتم نوشته در بانک ثبت بشه.
ممنون میشم اگه کمک کنید.:افسرده:

k_ce_esf
چهارشنبه 26 مرداد 1390, 08:43 صبح
خواهشا کمک کنید،کارم خیلی گیره:گریه::گریه::گریه:

White.Wit
چهارشنبه 26 مرداد 1390, 09:09 صبح
سلام دوست عزیز
نمیدونم که منظورتو درست متوجه شدم یا نه؟! اما اگه همونطوری باشه که من متوجه شده باشم شما لیست کالاها با کدشون رو تو یه CheckedListBox نشون میدین و میخواین کاربر هرچندتا رو تیک زد تعدادشون رو هم انتخاب کنه و سپس بتونه ثبت کنه! شما میتونید در رویداد OnChecked مربوط به CheckedListBox کدی بنویسید که اگه تیک خورد یه تکس باکس جلوش بصورت پویا درست کنه و داخل اون تکس باکس تعداد کالا رو دریافت کنه و موقع ثبت مقدار این تکس باکس رو بعنوان پارامتر به دستور اینسرت اس کیو الت بفرست و اونجا ثبت کن.

k_ce_esf
چهارشنبه 26 مرداد 1390, 09:49 صبح
خیلی ممنونم از جوابتون،بله دقیقا من همین کار را میخوام انجام بدم ،راه حلی که میگید را نمیتونم درست پیاده سازی کنم،میشه کداش را برام بگذارید یا راهنماییم کنید.
من الان برای این که item های انتخاب شدم در بانک ثبت بشه از این کدها استفاده کردم،چه طوری بگم وقتی item ی چک خورد یه text box دقیقا روبروی همون item قرار بده؟در موقع ثبت بانک هم چه طور میتونم بگم مقدار textboxی که دقیقا روبروی این item است را در فیلد مقدار ثبت کن؟
خیلی ممنون میشم بازم کمکم کنید.:افسرده:

privatevoid checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
TextBox txt1 = newTextBox();
txt1.Location = newPoint(5, 60);
this.Controls.Add(txt1);
listBox1.Items.Add(checkedListBox1.SelectedItem.To String());
}
else
{
listBox1.Items.Remove(checkedListBox1.SelectedItem .ToString());
}
}



privatevoid btnsave_Click(object sender, EventArgs e)
{
for (int k = 0; k < listBox1.Items.Count; k++)
{
string query_insert = "insert into assign_items(cod_mat )values(" + Convert.ToInt32(listBox1.Items[k]) + " ";
sqlCommand1.CommandText = query_insert;
sqlCommand1.ExecuteNonQuery();
}
listBox1.Items.Clear();
}

k_ce_esf
چهارشنبه 26 مرداد 1390, 11:49 صبح
مشکلم با ایجاد کردن Text boxها و چگونگی ثبت در بانک حل شد ،فقط یه مشکل میمونه.
TextBox ها را من به صورت زیر ایجاد کردم،با این کدها یکی یکی text Box ها جلوی هر Item ی که در CheckListBox چک خورده ایجاد میشه،فقط مشکل اینه که این TextBox ها زیر هم اضافه میشه و میره پایین،میخوام یه جایی داشته باشم که بتونم مثل ListBox وقتی تعداد item ها درش از ارتفاع listBox زیاد تر شه،خود به خود scroll بخوره .توی ListBox،به عنوان itemهاش text box اضافه کنم؟اگه میشه چه طوری؟اگه نمیشه کنترل دیگه ای هست که من بتونم چندین textbox اضافه کنم طوری که اگه تعداد textbox ها از یه حدی بیشتر شد ،اون کنترل اسکرول بخوره و اندازه اولیش ثابت باقی بمونه؟


int b = 43;
privatevoid clstitems_ItemCheck(object sender, ItemCheckEventArgs e)
{

if (e.NewValue == CheckState.Checked)
{

int index = e.Index;
b = 43 + index * 23;
TextBox txt1 = newTextBox();
txt1.Location = newPoint(5, b);
txt1.Size = newSize(52,21);
this.Controls.Add(txt1);
lstitems.Items.Add(clstitems.SelectedItem.ToString ());
}
else
{
lstitems.Items.Remove(clstitems.SelectedItem.ToStr ing());
}
}

White.Wit
پنج شنبه 27 مرداد 1390, 12:14 عصر
شما میتونید تکس باکس ها رو داخل پنل ایجاد کنید. در صورتیکه که پنل ارتفاعش برابر ارتفاع دیتا گرید باشه!
در این حالت اگه تعداد و ارتفاع تکس باکس ها از ارتفاع پنل بیشت بشه خودش بصورت خودکار اسکرول می خوره و بقیه ماجرا.

k_ce_esf
جمعه 28 مرداد 1390, 00:42 صبح
خیلی ممنونم از جوابتون.
این قسمت جوابتون که گفتین "در صورتیکه که پنل ارتفاعش برابر ارتفاع دیتا گرید باشه!" را نفهمیدم،ارتفاع دیتا گرید؟؟؟؟
من خواستم در پنل text box ها را ایجاد کنم اما مشکل این جا بود که در زمان run time فقط از بین تعداد text box مختلفی که باید ایجاد شه فقط اولین text box در پنل ایجاد میشد،دقیقا همون کد ها را برای flow layout panel نوشتم و کامل بهم جواب داد.
نمیدونم مشکل از کجاست که panel بهم جواب نداد.کسی میدونه دلیلشو؟