PDA

View Full Version : سوال: نمایش و عدم نمایش ستون دیتاگرید توسط چک لیست باکس



mahdi-1
پنج شنبه 22 فروردین 1392, 10:24 صبح
با چه دستوری میشه تشخیص داد که یک عنصری با شماره ی I که از حلقه ای که توشه میگیره، در check list box علامت خورده یا نه؟
من این دستورات رو برای حالت علامت خورده نوشتم میشه تو حالت دیگه اش کمکم کنید:
private void checkedListBox12_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < checkedListBox12.CheckedItems.Count; i++)
{

dataGridView1.Columns[checkedListBox12.SelectedIndex].Visible = false;

}


}
من هدفم اینه که با علامت زدن نام فیلد در Check list box فیلد اون تو دیتاگرید فعال و غیر فعال بشه.

alexmcse
پنج شنبه 22 فروردین 1392, 10:35 صبح
سلام
منظورت یک سطر است یا سلول

alexmcse
پنج شنبه 22 فروردین 1392, 10:40 صبح
private void checkedListBox12_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < checkedListBox12.CheckedItems.Count; i++)
{

dataGridView1.Columns[checkedListBox12.SelectedIndex].Visible = false;



dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[1];
break;
}
}

mahdi-1
پنج شنبه 22 فروردین 1392, 10:53 صبح
ستون
تودستورات که نوشتم dataGridView1.Columns

Mahmoud.Afrad
پنج شنبه 22 فروردین 1392, 10:58 صبح
اینطوری CheckListBox را مقداردهی کن:

public FrmMain()
{
InitializeComponent();

foreach (DataGridViewColumn col in dataGridView1.Columns)
{
checkedListBox1.Items.Add(col.Name);
checkedListBox1.SetItemCheckState(checkedListBox1. Items.Count - 1, CheckState.Checked);
}
}

به صورت زیر هم نمایش یا عدم نمایش را تنظیم کن(آنهایی که تیک خوردن نمایش داده میشن). در ضمن برای این جور کارها از حلقه استفاده نکن، رویداد ItemCheck برای همین جور کارهاست:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
dataGridView1.Columns[checkedListBox1.Items[e.Index].ToString()].Visible = Convert.ToBoolean(e.NewValue);
}

mahdi-1
پنج شنبه 22 فروردین 1392, 11:04 صبح
مثل این که اشتباه شده
من با سلول ها کاری ندارم فقط میخوام ستون ها رو فعال یا غیر فعال کنم
دستوراتی که نوشتم ستون ها رو غیر فعال میکنه ولی من دنبال دستوری هستم تا شماره عنصر علامت نخورده در check list box رو به من برگردونه تا بتونم اون ها رو فعال کنم.

mahdi-1
پنج شنبه 22 فروردین 1392, 11:13 صبح
خیلی ممنون از پاسختون
همه چی درسته ولی وقتی تیک های جلوی اسم فیلد ها رو توی check list box بر میدارم فیلد ها غیر فعال نمیشن!

mahdi-1
پنج شنبه 22 فروردین 1392, 11:14 صبح
اگر کد من منظورت هست که کاری به سلول نداشتم. امتحان کن متوجه میشی.

نه داداش دست شما هم درد نکنه فقط به یه مشکل بر خوردم که تو پست بعدی فرستادم.

Mahmoud.Afrad
پنج شنبه 22 فروردین 1392, 11:19 صبح
کدو کپی پیست کردی؟

mahdi-1
پنج شنبه 22 فروردین 1392, 11:22 صبح
اینطوری CheckListBox را مقداردهی کن:

public FrmMain()
{
InitializeComponent();

foreach (DataGridViewColumn col in dataGridView1.Columns)
{
checkedListBox1.Items.Add(col.Name);
checkedListBox1.SetItemCheckState(checkedListBox1. Items.Count - 1, CheckState.Checked);
}
}

به صورت زیر هم نمایش یا عدم نمایش را تنظیم کن(آنهایی که تیک خوردن نمایش داده میشن). در ضمن برای این جور کارها از حلقه استفاده نکن، رویداد ItemCheck برای همین جور کارهاست:

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
dataGridView1.Columns[checkedListBox1.Items[e.Index].ToString()].Visible = Convert.ToBoolean(e.NewValue);
}


دوست عزیز این دستورات چک لیست باکس رو درست مقدار دهی میکنه ولی رویداد Item Check رو تشخیص نمیده و ستون ها رو با برداشتن تیک جلوی اسمشون غیر فعال نمی کنه.

mahdi-1
پنج شنبه 22 فروردین 1392, 11:25 صبح
کدو کپی پیست کردی؟

آره قسمت اول که مربوط به مقدار دهی check list box رو تو رویداد یه دکمه گذاشتم که بعد از Fill شدن data grid عمل کنه که خیلی هم خوب عمل کرد
ولی قسمت دوم رو تو برنامه با رویدادش کپی کردم ولی با برداشتن تیک ستون ها غیر فعال نمیشه (به نظرم رویداد رو شناسایی نمیکنه چه طور باید مطمئن بشم؟)

Mahmoud.Afrad
پنج شنبه 22 فروردین 1392, 11:30 صبح
اشکال کپی پیست صرف همینه دیگه! کنترل CheckListBox را انتخاب کن بعد برو از پنجره Events رویداد ItemCheck را روی checkedListBox1_ItemCheckتنظیم کن.

mahdi-1
پنج شنبه 22 فروردین 1392, 11:47 صبح
اشکال کپی پیست صرف همینه دیگه! کنترل CheckListBox را انتخاب کن بعد برو از پنجره Events رویداد CheckItem را روی checkedListBox1_ItemCheckتنظیم کن.
دوست عزیز رویداد check item که توی Event نیست میشه بیشتر توضیح بدید:
http://www.niloblog.com/files/images/gwyaeys64gmadaguov8.png

mahdi-1
پنج شنبه 22 فروردین 1392, 11:54 صبح
اشکال کپی پیست صرف همینه دیگه! کنترل CheckListBox را انتخاب کن بعد برو از پنجره Events رویداد CheckItem را روی checkedListBox1_ItemCheckتنظیم کن.

دوست عزیز این پنجره Events که گفتید توی پنجره Properties هست یا یه پنجره دیگه است؟

mahdi-1
پنج شنبه 22 فروردین 1392, 12:03 عصر
اشکال کپی پیست صرف همینه دیگه! کنترل CheckListBox را انتخاب کن بعد برو از پنجره Events رویداد CheckItem را روی checkedListBox1_ItemCheckتنظیم کن.
دست شما درد نکنه مشکل بر طرف شد خیلی خیلی از لطفتون ممنونم.

Mahmoud.Afrad
پنج شنبه 22 فروردین 1392, 12:06 عصر
ببخشید ItemCheck. اگر دقت میکردی اسم رویداد توی checkedListBox1_ItemCheck آمده.
همین قسمتی که عکسشو گذاشتی پنجره Events هست.

حسین.کاظمی
یک شنبه 03 فروردین 1393, 23:17 عصر
با عرض سلام خدمت شما اساتید محترم

من در حال نوشتن یک برنامه با زبان سی شارپ هستم که در یک فرم اطلاعات افراد را توسط ابزار datagridview بنمایش گذاشتم و میخاهم در فرم دیگری با ابزار checkedboxlist ستون های datagridview فرم اولی را پنهان یا نمایش بدهم.
از شما اساتید خواهشمندم که من را راهنمایی کنید.

اینم عکس ضمیمه اش



باتشکر