PDA

View Full Version : رویداد راست کلیک = رویداد چپ کلیک



ehsan_kamran
جمعه 07 مهر 1391, 14:37 عصر
سلام خدمت دوستان عزیزم

چطوری میشه وقتی روی یک ردیف از دیتا گیرید راست کلیک میکنی ،دقیقا چپ کلیک انجام بشه ؟

این روش جواب نمیده

dataGridViewContactList.Rows[e.RowIndex].Selected = true;

چون فقط به حالت انتخاب در میاد و کارهایی مثل databinding رو انجام نمیده

ممنون میشم راهنماییم کنین

danialafshari
جمعه 07 مهر 1391, 15:30 عصر
سلام دوست من
سوالت واضح نیست
این یه قطعه کده برای کار با راست کلیک

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
MessageBox.Show("Right Click");
}
}

mehdy.programmer
جمعه 07 مهر 1391, 15:55 عصر
می تونی یه متد داشته باشی بعد با هر دو رویداد راست کلیک و کلیک چپ اونو صدا بزنی!

ehsan_kamran
جمعه 07 مهر 1391, 19:26 عصر
سلام دوست من
سوالت واضح نیست
این یه قطعه کده برای کار با راست کلیک

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
MessageBox.Show("Right Click");
}
}


ممنون دانیال جان
تا اینجاش درست ولی چطوری به جای messagebox بگم چپ کلیک انجام بشه ؟

ehsan_kamran
جمعه 07 مهر 1391, 19:27 عصر
می تونی یه متد داشته باشی بعد با هر دو رویداد راست کلیک و کلیک چپ اونو صدا بزنی!

درست ولی چطوری میتونم متد چپ کلیک پیش فرض رو اجرا کنم؟

Mahmoud Zaad
جمعه 07 مهر 1391, 19:29 عصر
شما توی رویداد کلیک چپ چه کاری رو انجام میدید؟

Mahmoud Zaad
جمعه 07 مهر 1391, 19:37 عصر
اینجوری میشه:
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
dataGridView1.MouseClick +=new MouseEventHandler(dataGridView1_MouseClick);
}
}
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("OK");

}

ehsan_kamran
جمعه 07 مهر 1391, 19:57 عصر
شما توی رویداد کلیک چپ چه کاری رو انجام میدید؟

میثم جان ممنون از راهنماییت
بذار بیشتر توضیح بدم
من یه datagridview دارم که datasource اونو به مثلا "مسافران" تخصیص دادم
چند تا هم textbox دارم که اون ها هم با استفاده از databinding به همون data source ربطشون دادم
حالا وقتی رو هر ردیف datagrid چپ کلیک میکنی، به صورت خودکار textbox ها مقدارهای همون ردیفه datagrid رو با استفاده از خاصیت databinding خودشون میگیرن
حالا من یه راست کلیک میکنم رو datagrid ولی مقدار textbox ها تغییر نمیکنه یا به عبارتی databinding انها کار نمیکنه
چه کنم ؟ :(

Mahmoud Zaad
جمعه 07 مهر 1391, 20:27 عصر
مشکل اینه که بنده خدا متوجه نمیشه کجا راست کلیک شده! در واقع باید با استفاده از e.RowIndex بهش بگیم که روی فلان سطر کلیک راست شده. در کل می تونید به شکل زیر بنویسید:
if (e.Button == MouseButtons.Left)
{
textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
}
if (e.Button == MouseButtons.Right)
{
textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

dataGridView1.ClearSelection();
dataGridView1.Rows[e.RowIndex].Selected = true;
}

البته کدهای پست 7 رو میشه اینجوری اصلاح کرد:
private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler(dataGridView1_Ce llMouseClick);
}

}

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
dataGridView1.ClearSelection();
dataGridView1.Rows[e.RowIndex].Selected = true;
}

ehsan_kamran
جمعه 07 مهر 1391, 20:34 عصر
مشکل اینه که بنده خدا متوجه نمیشه کجا راست کلیک شده! در واقع باید با استفاده از e.RowIndex بهش بگیم که روی فلان سطر کلیک راست شده. در کل می تونید به شکل زیر بنویسید:
if (e.Button == MouseButtons.Left)
{
textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
}
if (e.Button == MouseButtons.Right)
{
textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();

dataGridView1.ClearSelection();
dataGridView1.Rows[e.RowIndex].Selected = true;
}

:))
میثم جان میفهمه ، حالیش نمیشه :بامزه:
select میکنه ولی binding کار نمیکنه

Mahmoud Zaad
جمعه 07 مهر 1391, 20:41 عصر
پست قبلی اصلاح شد. حالیش میشه باید با زبان خودش باهاش حرف بزنی! به قول شاعر:

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

عمران صلاحی

ehsan_kamran
جمعه 07 مهر 1391, 20:59 عصر
پست قبلی اصلاح شد. حالیش میشه باید با زبان خودش باهاش حرف بزنی! به قول شاعر:

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

عمران صلاحی

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

رو datagrid اگه چپ کلیک شد ، راست کلید زده بشه
:((((((

ali_habibi1384
جمعه 07 مهر 1391, 22:14 عصر
اين لينك رو ببينيد (http://www.gamedev.net/topic/321029-how-to-simulate-a-mouse-click-in-c/)
اينم يه نمونه ديگه (http://stackoverflow.com/questions/8272681/how-can-i-simulate-a-mouse-click-at-a-certain-position-on-the-screen)

Mahmoud.Afrad
شنبه 08 مهر 1391, 02:38 صبح
بله بله
میشه اینجوری راش انداخت ولی من چند صد جا از databindingهاش استفاده کردم
بخاطر همین فقط اون دستوری کاره منو راه میندازه که به صورت خودکار databinding های textbox ها کار کنه
یعنی هیچ دستوری نیست کاره به این راحتی رو انجام بده؟
فارسیش اینجوریه

رو datagrid اگه چپ کلیک شد ، راست کلید زده بشه
:((((((

اگر دیتاگرید را از طریق ویزارد بایند کردی خوب تکست باکسها رو هم به همون بایندینگ سورس بایند کن.


ولی اگر با کنویسی گرید را پر کردی به اینصورت عمل کن
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
dataGridView1.ClearSelection();
dataGridView1.Rows[e.RowIndex].Selected = true;
textBox1.Text = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[0].Value);
textBox2.Text = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[1].Value);
textBox3.Text = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[2].Value);
//...
}
}
برای هر سلول باید کدشو بنویسی.

ehsan_kamran
شنبه 08 مهر 1391, 10:36 صبح
از همه دوستا ممنونم
خیلی لطف کردین