PDA

View Full Version : سوال: رفتن به سلول بعدي گريدويو با زدن اينتر



tara1367
سه شنبه 30 آبان 1391, 10:51 صبح
سلام دوستان عزيز چگونه ميتوان هنگامي كه داده را در سلولي وارد كرديم بعد با زدن دكمه اينتر به جاي رفتن به سطر بعدي به سلول بعدي رفته و نهايتا از آخرين سلول به سطر بعدي برود.
با تشكر

tara1367
سه شنبه 30 آبان 1391, 11:11 صبح
دوستان خواهش ميكنم اگر كسي ميدونه راهنمايي كنه ممنون ميشم

tara1367
سه شنبه 30 آبان 1391, 12:03 عصر
هيچ كس نميدونه؟ :افسرده:

samadblaj
سه شنبه 30 آبان 1391, 12:12 عصر
سلام بفرما :

if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress=true;
int iColumn = dataGridView1.CurrentCell.ColumnIndex;
int iRow = dataGridView1.CurrentCell.RowIndex;
if (iColumn == dataGridView1.Columns.Count-1)
dataGridView1.CurrentCell = dataGridView1[0, iRow + 1];
else
dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow];

}

یا :

if (e.KeyData == Keys.Enter)
{
int col = dataGridView1.CurrentCell.ColumnIndex;
int row = dataGridView1.CurrentCell.RowIndex;

if (col < dataGridView1.ColumnCount - 1)
{
col ++;
}
else
{
col = 0;
row++;
}

if (row == dataGridView1.RowCount)
dataGridView1.Rows.Add();

dataGridView1.CurrentCell = dataGridView1[col, row];
e.Handled = true;
}

programerinfonet
سه شنبه 30 آبان 1391, 12:12 عصر
ببین این کارت رو راه میندازه ؟

int Selected_Row= -1 , Selected_Column = -1;
private void dataGridView1_KeyDown( object sender , KeyEventArgs e )
{
if ( e.KeyCode == Keys.Enter )
if ( Selected_Column < dataGridView1.ColumnCount - 1 )
dataGridView1.CurrentCell = dataGridView1[ Selected_Column + 1 , Selected_Row ];

else
{
if ( dataGridView1.RowCount-1 > Selected_Row )
dataGridView1.CurrentCell = dataGridView1[ 0 , Selected_Row ];
}
}




private void dataGridView1_CellEnter( object sender , DataGridViewCellEventArgs e )
{
Selected_Column = e.ColumnIndex;
Selected_Row = e.RowIndex;
}

tara1367
سه شنبه 30 آبان 1391, 12:21 عصر
سلام بفرما :

if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress=true;
int iColumn = dataGridView1.CurrentCell.ColumnIndex;
int iRow = dataGridView1.CurrentCell.RowIndex;
if (iColumn == dataGridView1.Columns.Count-1)
dataGridView1.CurrentCell = dataGridView1[0, iRow + 1];
else
dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow];

}




ممنون دوست عزيز لطف كردين ولي اين كد زماني كار ميكند كه در حال وارد كردن داده در سلول نيستيم من مي خواهم داده را كه وارد كردم بعد اينتر بزنم و بعد به سلول بعدي برود. با تشكر

tara1367
سه شنبه 30 آبان 1391, 12:22 عصر
ببین این کارت رو راه میندازه ؟

int Selected_Row= -1 , Selected_Column = -1;
private void dataGridView1_KeyDown( object sender , KeyEventArgs e )
{
if ( e.KeyCode == Keys.Enter )
if ( Selected_Column < dataGridView1.ColumnCount - 1 )
dataGridView1.CurrentCell = dataGridView1[ Selected_Column + 1 , Selected_Row ];

else
{
if ( dataGridView1.RowCount-1 > Selected_Row )
dataGridView1.CurrentCell = dataGridView1[ 0 , Selected_Row ];
}
}




private void dataGridView1_CellEnter( object sender , DataGridViewCellEventArgs e )
{
Selected_Column = e.ColumnIndex;
Selected_Row = e.RowIndex;
}


ممنون ولي اين كد به سلول بعدي در سطر بعدي ميرود در صورتي كه من ميخواهم به سلول بعدي در همان سطر برود (البته در حين وارد كردن داده در سلول) با تشكر

samadblaj
سه شنبه 30 آبان 1391, 12:22 عصر
if (e.KeyData == Keys.Enter)
{
int col = dataGridView1.CurrentCell.ColumnIndex;
int row = dataGridView1.CurrentCell.RowIndex;

if (col < dataGridView1.ColumnCount - 1)
{
col ++;
}
else
{
col = 0;
row++;
}

if (row == dataGridView1.RowCount)
dataGridView1.Rows.Add();

dataGridView1.CurrentCell = dataGridView1[col, row];
e.Handled = true;
}

سلام ویرایش کردم از قسمت دوم استفاده کنید و سفارشی کنید موفق باشید...

tara1367
سه شنبه 30 آبان 1391, 12:35 عصر
ببخشيد ولي بازم همون مشكل قبليه چون دارم ديتا وارد ميكنم ميره به همان سلول سطر بعدي نه به سلول بعدي در همان سطر. با تشكر

RIG000
سه شنبه 30 آبان 1391, 13:03 عصر
4 خط کد!


private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
SendKeys.Send("{up}");
SendKeys.Send("{right}");
}

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
SendKeys.Send("{up}");
SendKeys.Send("{right}");
}
}

tara1367
چهارشنبه 01 آذر 1391, 09:03 صبح
ممنون دوست عزيز لطف كردين با كمي تغيير در كد شما مشكلم حل شد.
private void DGVKarkard_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (DGVKarkard.CurrentRow.Index == DGVKarkard.RowCount - 1)
{
SendKeys.Send("{down}");
SendKeys.Send("{left}");
return;
}
SendKeys.Send("{up}");
SendKeys.Send("{left}");
}
private void DGVKarkard_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (e.KeyData == Keys.Enter)
{
if (DGVKarkard.CurrentCell.ColumnIndex == DGVKarkard.Columns.Count - 1)
{
DGVKarkard.CurrentCell = DGVKarkard[5, DGVKarkard.CurrentCell.RowIndex];
return;
}
else if (DGVKarkard.CurrentRow.Index == DGVKarkard.RowCount - 1)
{
SendKeys.Send("{down}");
SendKeys.Send("{left}");
return;
}
else
{
SendKeys.Send("{up}");
SendKeys.Send("{left}");
return;
}
}
}
}