PDA

View Full Version : قرار گرفتن فوکوس در خانه اول گرید



sara_traveler
چهارشنبه 05 آبان 1389, 14:15 عصر
من می خوام به محض باز شدن فرم فوکوس در خانه اول قرار بگیره
الان هست اما اما باز هم نیاز به کلیک کردن در سلول اول داره

Reza_Yarahmadi
چهارشنبه 05 آبان 1389, 15:06 عصر
من می خوام به محض باز شدن فرم فوکوس در خانه اول قرار بگیره
الان هست اما اما باز هم نیاز به کلیک کردن در سلول اول داره
سوالتون واضح نيست!!
يعني چي فوكوس در خانه اول قرار بگيره؟ در چه حالتي قرار بگيره؟ ميخوايد حالت EditMode باشه؟ براي چه كاري به اين نياز داريد؟ ...؟

sara_traveler
چهارشنبه 05 آبان 1389, 15:21 عصر
بینید من می خوام به محض وارد شدن به فرم بتونم در سلول ها مقادیر وارد کنم ÷س نیاز دارم فوکوس در سلول اول قرار بگیره با این کدم امتحان کردم
datagrid1.curent cell=datagrid.rows[0].cells[2];

Reza_Yarahmadi
چهارشنبه 05 آبان 1389, 15:59 عصر
لطفا كامل توضيح بديد.
حدس ميزنم شما يك گريد خالي داريد كه ميخوايد بصورت دستي و از اطلاعات يك گريد ديگه اونو پر كنيد. اگه اينطوريه كافيه بصورت زير عمل كنيد

dataGridView1.Rows.Add();
dataGridView1.CurrentCell.Value = "Reza";
اگر حدسم درست نيست لطفا كاملا توضيح بديد كه قصد داريد چه كاري انجام بديد.

mojtaheri
چهارشنبه 05 آبان 1389, 16:03 عصر
احتمالا منظورش اینه که focus روی کنترل های دیگه مثل تکست باکس یا چیزی دیگه ایی نباشه.tabindex گرید رو صفر کنن درست می شه.

sara_traveler
چهارشنبه 05 آبان 1389, 16:07 عصر
ببینید ÷یش فرض تا وارد صفحه میشیم فوکوس در گرید قرار داره و میشه راحت در اون تایپ کرد اما مال من الان روی گرید قرار داره و سلول اول نارنجی هم هست اما چیزی تایپ نمیشه حتما باید با موس کلیک کرد تا بتوان چیزی نوشت

cheshm6k
جمعه 07 آبان 1389, 00:13 صبح
سلام.
با این کد :


dataGridView1.BeginEdit(true);

سلول رو برای تایپ یا ویرایش آماده کنید . بسته به نیازتون تصمیم بگیرید در کدوم رویداد ازش استفاده کنید .
نکته : فرستادن مقدار true ، بعنوان پارامتر، به منزله انتخاب متن موجود در سلول هست. در صورتی که نمیخواید این اتفاق بیفته false قرار بدید.
موفق باشید.

sara_traveler
جمعه 07 آبان 1389, 13:53 عصر
خوب حالا اگه بخوام مثلا بعد از اينكه فوكوس رفت خانه اول بعد بره خانه 3 بايد چيكار كنم
ممنون از جوابتونم

cheshm6k
جمعه 07 آبان 1389, 15:38 عصر
این کد :


dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[2];

سلول جاری رو به سلول سوم سطر جاری تغییر میده.

اگه میخواید با ورود به سلول اول این اتفاق بیفته ، تو رویداد CellEnter خصوصیت e.ColumnIndex رو چک کنید ، اگه مساوی صفر بود این عمل رو انجام بدید.
موفق باشید.

sara_traveler
شنبه 08 آبان 1389, 11:49 صبح
من این کد در celleave , cellendedit امتحان کردم اما انجام نمیشه و بازهم به خانه کناری میره و به سلولی که من می خوام نمیره

cheshm6k
شنبه 08 آبان 1389, 13:54 عصر
کد مشکلی نداره و انجام هم میشه ، اما بصورت پیشفرض بعد از اتمام عمل ویرایش سلول جاری به سلول پایینی یا ... تغییر پیدا میکنه . برای جلوگیری از اینکار باید این تابع رو بنویسید :


protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if (msg.WParam.ToInt32() == (int)Keys.Enter)
{
dataGridView1.CurrentCell = dataGridView1.CurrentRow.Cells[2];
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}

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

موفق باشید.

پ.ن :
1- لطفا برای سئوال جدید، تاپیک جدید ایجاد نمایید.
2- حتی المقدور صورت مسئله را واضح مطرح کنید، تا راهنمایی مناسبتری دریافت کنید.