ورود به حالت ویرایش به محض ورود به سلول datagridview
سلام من با اینتر بین سلولهای دیتاگرد جابجا میشم که در کد نویسیش مشکلی ندارم.
مشکل اینجا هست که وقتی وارد یه سلول میشم میخوام اون سلول خودکار بره به حالت ویرایش
مشکل دوم وقتی در یک سلول در حالت ویرایش هستم و اینتر میزنم بره سلول بعدی با اولین اینتر اون سلول انتخاب میشه و از حالت ویرایش میاد بیرون و با اینتر دوم میره سلول بعدی که من میخوام با همون اینتر اول چه در حالت ویریایش در در حالت انتخاب بره سلول بعدی و اون سلول بعدی که وارد شد بره به حالت ویرایش
داخل پرانتز
من از کد beginedit در ورودی cells مورد نظم استفاده کردم جواب نداد
پیشاپیش تشکر میکنم از دوستان.
نقل قول: جابجا شدن در بین سلولهای دیتاگرید در حالت ویرایش و ورود به سلول جدید و انتخاب ویرایش
نقل قول: جابجا شدن در بین سلولهای دیتاگرید در حالت ویرایش و ورود به سلول جدید و انتخاب ویرایش
نقل قول:
نوشته شده توسط
m.r226
این کد کلید اینتر رو به تب تبدیل میکنه که دارمش اینو
راه حل که جواب بده اگه دارن بدین ممنون
نقل قول: جابجا شدن در بین سلولهای دیتاگرید در حالت ویرایش و ورود به سلول جدید و انتخاب ویرایش
نقل قول:
نوشته شده توسط
patrick5053
این کد کلید اینتر رو به تب تبدیل میکنه که دارمش اینو
راه حل که جواب بده اگه دارن بدین ممنون
دوستان کسی راه حلی نداره؟
نقل قول: جابجا شدن در بین سلولهای دیتاگرید در حالت ویرایش و ورود به سلول جدید و انتخاب ویرایش
نقل قول: ورود به حالت ویرایش به محض ورود به سلول datagridview
سلام دوستان من جواب این تایپیکم رو پدا کردم میزارم اینجا شاید به دردتون بخوره و استفاده کنید
اول خاصیت EditMode دیتاگرایدتون رو روی EditOnEnter تنظیم کنید
بعد کدهارو در محل مربوطه که ذکر شده قرار دهید
private void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
DataGridViewTextBoxEditingControl a = (DataGridViewTextBoxEditingControl)sender;
//a.PreviewKeyDown -= PreviewKeyDownEventHandler (dataGridView1_PreviewKeyDown)
DataGridView s = (DataGridView)a.EditingControlDataGridView;
if (e.KeyCode == Keys.Enter)
{
int newRow;
int newColumn;
if (s.CurrentCell.ColumnIndex == s.ColumnCount - 1) // it's a last column, move to next row;
{
newRow = s.CurrentCell.RowIndex + 1;
newColumn = 0;
if (newRow == s.RowCount)
s.Rows.Add(1); // ADD new row or RETURN (depends of your purposes..)
}
else // just change current column. row is same
{
newRow = s.CurrentCell.RowIndex;
newColumn = s.CurrentCell.ColumnIndex + 1;
}
s.CurrentCell = s.Rows[newRow].Cells[newColumn];
}
}
کدهای بعدی
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) {
DataGridViewTextBoxEditingControl tb = (DataGridViewTextBoxEditingControl)e.Control;
tb.PreviewKeyDown -= dataGridView1_PreviewKeyDown;
tb.PreviewKeyDown += dataGridView1_PreviewKeyDown;
}
و در آخر
class MyDataGridView : DataGridView {
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((keyData == Keys.Enter) && (this.EditingControl != null))
{
return true;
}
//for the rest of the keys, proceed as normal
return base.ProcessCmdKey(ref msg, keyData);
}
}
دقت کنید کلاس آخری که گذاشتم در خود همون فرم و در آخر فرم که کلاس فرم تموم میشه بزارید یعنی بعد از آخرین } که کلاس فرم تموم میشه
دقت بعدی در فرمهایی که به جز تکسباس تعریف کردید خطا میده که با کد نویسی بگید به جز اون سلولها در بقیه سلولها که تکس هستن اجرا کن
اگه لازم به توضیح بود بگید تا براتون توضیح بدم موفق باشید