PDA

View Full Version : چگونگی شبیه سازی ماوس کلیک برای سطرهای datagridview



golestan1
سه شنبه 10 فروردین 1395, 10:29 صبح
با سلام
درون دیتا گرید سطر هایی دارم که با کلیک روی هر سطر مقادیر سلول ها خوانده می شود و به ازای مقدار هر سلول دستوراتی اعمال میشه نحوه سلکت هر سطر رو در فول سلکت گذاشتم
تنها کدی که لازم دارم اینکه با کلیک روی دکمه ، عمل ماوس کلیک روی تمامی سطر ها انجام شود

Mahmoud.Afrad
سه شنبه 10 فروردین 1395, 11:11 صبح
کدی که در موس کلیک نوشتید رو به صورت یک متد دربیارید و با یک حلقه این متد رو برای هر سطر فراخوانی کنید.

amirc901
سه شنبه 10 فروردین 1395, 12:28 عصر
dataGridView1.MultiSelect = true;
int c = dataGridView1.Rows.Count;
for (int i = 0; i < c; i++)
dataGridView1.Rows[i].Selected = true;

golestan1
سه شنبه 10 فروردین 1395, 16:21 عصر
dataGridView1.MultiSelect = true;
int c = dataGridView1.Rows.Count;
for (int i = 0; i < c; i++)
dataGridView1.Rows[i].Selected = true;
این همه رو سلکت میکنه اما ماوس کلیک نمیکنه


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

یعنی همچین چیزی این یا اجرا نمیشه و یا بی نهایت بار اجرا میشه
هر وقت اجرا بشه فقط یه بار اجرا میشه
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (i >= dataGridView1.RowCount)

break;

dgvMouseClick();
}

Mahmoud.Afrad
سه شنبه 10 فروردین 1395, 16:41 عصر
اگر کد کلیک رو میذاشتی بهتر بود. ولی منظورم چیزی مثل کد زیر هست:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DoSomething(e.RowIndex);
}

private void button7_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DoSomething(i);
}

}

void DoSomething(int rowIndex)
{
// ... use dataGridView1.Rows[rowIndex]
}

amirc901
سه شنبه 10 فروردین 1395, 17:57 عصر
یعنی همچین چیزی این یا اجرا نمیشه و یا بی نهایت بار اجرا میشه
هر وقت اجرا بشه فقط یه بار اجرا میشه
for (int i = 0; i < dataGridView1.RowCount; i++)
{
if (i >= dataGridView1.RowCount)

break;

dgvMouseClick();
}

خوب شما لطف کن متد کلیکتم بزار چون میگی داره بینهایت بار اجرا میشه شاید به خاطر اینکه متد کلیکت به طرزیه کهش داره تعداد سطر های گرید ویو رو افزایش میده

golestan1
چهارشنبه 11 فروردین 1395, 05:24 صبح
اگر کد کلیک رو میذاشتی بهتر بود. ولی منظورم چیزی مثل کد زیر هست:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DoSomething(e.RowIndex);
}

private void button7_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DoSomething(i);
}

}

void DoSomething(int rowIndex)
{
// ... use dataGridView1.Rows[rowIndex]
}



با سلام استاد عزیز
این کد میاد و اولین رکورد رو به اندازه تعداد رکوردها کلیک میکنه و روی تک تک رکورد ها اعمال نکرد
کد ماوس کلیک رو نمی زارم چون زیاده و گیچ کننده است
ولی خلاصه اش اینطوریه که در دیتا گرید1 مشخصات فرد رو لود میکنم ( همه افراد )
بعد با وارد کردن نام فرد در تکست باکس عمل جستجو انجام میشه و نام چند فرد پیدا شده دوباره در همان دیتا گرید نمایش داده میشه
حالا اگه روی یکی از نتایج ماوس کلیک کنم ،تکست همان سطر یا همان سلول ها به تکست لیبل ها منتقل میشه
بعد در تکست چنج لیبل شرطی گذاشتم تا اگه تکست لیبل 20 بود ، تکست تغییر کنه و بشه (شاگرد ممتاز)
و این تغییرات رو در دیتا گرید 2 نمایش میدهم
یعنی تا اینجا جستجو کردم و با ماوس کلیک روی هر رکورد تغییراتی در تکست لیبل ها انجام شد و دوباره در دیتا گرید 2 رکورد با تغییرات نمایش داده شد حالا فقط می خوام کاری کنم تا به جای اینکه روی تک تک رکورد ها کلیک کنم تا مراحل بالا انجام شود با یک کلیک (عمل ماوس کلیک روی تمام رکورد های دیتا گرید 1 انجام شود تا همه رکوردها با ویرایش در دیتاگرید ویو 2 نمایش داده بشه

golestan1
چهارشنبه 11 فروردین 1395, 14:28 عصر
آقا کسی نیست برنامه ام تمام شده فقط همین قسمت رو نتونستم حل کنم

golestan1
پنج شنبه 12 فروردین 1395, 12:34 عصر
این سوال ربطی به موضوع تاپیک نداره ولی ارزش نداره یه تاپیک جدا بزنم براش
چطوری ممکنه با دستور سویچ مقدار سلول های یک ستون رو تغییر داد به عنوان نمونه به جای عدد ،رشته نشان داده شود مانند
5
15
20
به جاش

ضعیف
خوب
شاگرد ممتاز

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