PDA

View Full Version : خطا در انتقال کلید به فرم زیرین



Pioneers
یک شنبه 25 آذر 1386, 09:45 صبح
با سلام
در یه فرم پس از بررسی فیلدها، یه پنجره نمایش داده میشه که فیلدهای غیر معتبر رو به کاربر نشون میده و Cursor داخل اولین فیلد نامعتبر قرار میگیره. ولی پس از زدن دکمه ok از این پنجره دوم، این دکمه در اولین فیلد هم زده شده و ایجاد مشکل میکنه. چکار میشه کرد که پس از تایید این پنجره پیام، دکمه Enter زده شده به فرم اصلی انتقال نیابد؟

mr_moghimkhani
یک شنبه 25 آذر 1386, 11:50 صبح
من متوجه نشدم، اگه میشه کدتون رو بگذارید تا روش بحث کنیم

Pioneers
یک شنبه 25 آذر 1386, 12:58 عصر
ببینید یه خط کد هست که یه فرم رو باز میکنه تا پیامی به کاربر نشون بده. خط بعد هم کنترل مورد نظر رو انتخاب میکنه تا کاربر متنش رو معتبر کنه. حال پس از اینکه دکمه تایید فرم پیام با Enter زده شد، این Enter انگار در کنترل یاد شده زده شده و بر اساس کدی که نوشتم میره کنترل بعدی رو انتخاب میکنه.

تذکر: نمایش پیام با فرم پیشفرض انجام نمیشه... ولی نباید ربطی داشته باشه.

hassan razavi
یک شنبه 25 آذر 1386, 13:08 عصر
چرا از خاصیت AcceptButton استفاده نمیکنید؟

mr_moghimkhani
یک شنبه 25 آذر 1386, 13:19 عصر
شما از کدوم یکی از این 2 دستور استفاده کردین:


MessageBox.show();
textbox1.focus();

یا


if (messageBox.show()==DialogResault.OK)
{
TextBox1.Focuse();
}

Pioneers
یک شنبه 25 آذر 1386, 13:35 عصر
پست 4: ببخشید ولی من چیز دیگه ای گفتم. فرم پیام فقط یه Label و یه Button داره و با زدن Enter این دکمه اجرا میشه.
ولی همین دکمه زده شده به فرم بعد هم منتقل میشه و یه رویداد دیگه رو اجرا میکنه.

پست 5: روش اول.

Pioneers
دوشنبه 26 آذر 1386, 13:52 عصر
کسی نمیتونه کمک کنه؟

sinpin
دوشنبه 26 آذر 1386, 14:13 عصر
پست 4: ببخشید ولی من چیز دیگه ای گفتم. فرم پیام فقط یه Label و یه Button داره و با زدن Enter این دکمه اجرا میشه.
ولی همین دکمه زده شده به فرم بعد هم منتقل میشه و یه رویداد دیگه رو اجرا میکنه.

پست 5: روش اول.

دوست عزیز، بهتره که شما کدتون رو (یا فایل همین قسمت برنامه) رو آپلود کنید تا دوستانی که میخوان راهنمایی کنن دچار ابهام نشند. (سئوال شما زیاد واضح نیست.)

Pioneers
دوشنبه 26 آذر 1386, 17:13 عصر
کد انتقال Focus به کنترل بعد:



if

(!e.Control && e.KeyCode == Keys.Return)//حرکت به جلو

for (int i = 0; i < Ctrl.Length; i++)
{
if (Ctrl[i].ContainsFocus && i != Ctrl.Length - 1)
{
Ctrl[i + 1].Focus(); break;
}
elseif (Ctrl[Ctrl.Length - 1].ContainsFocus)//کنترل آخر
{
SendKeys.Send(Key); break;//اجرای رویداد کلیک دکمه ثبت
}
}


در صورتیکه رویداد دکمه ثبت Fire شود، ابتدا اعتبار سنجی انجام میشود:
کد اعتبار سنجی فیلد:



if

(TXT_Name.Text == "")

{
OBJ_Vrfy.Show("هشدار", "لطفا نام سرفصل را وارد نمائــید.", Mesg_Icon.Alert);
TXT_Name.Focus();
}


ولی با بستن پیام، Focus بر کنترل بعد از TXT_Name قرار میگیرد.

Pioneers
سه شنبه 27 آذر 1386, 12:11 عصر
کسی راهی بنظرش نمی رسه؟

اَرژنگ
سه شنبه 27 آذر 1386, 15:32 عصر
کسی راهی بنظرش نمی رسه؟
این کد را میگذاشتید در یک پروژه کوچک که ما هم امتحان کنیم.
سوایه اینکه روش چک کردن مقادیر در بایندینگ به این شکل نیست، همینطوری فقط با نگاه کردن به سورس نمیشه چیزی گفت (شاید هم بشه ولی به زحمتش نمیارزه).
یک پروژه کوچک که این مشکل را نشان بده آپلود کنید همه راحتر امتحان میکنند و شما هم زودتر جواب میگیرید.

sinpin
چهارشنبه 28 آذر 1386, 08:48 صبح
این کد را میگذاشتید در یک پروژه کوچک که ما هم امتحان کنیم.
سوایه اینکه روش چک کردن مقادیر در بایندینگ به این شکل نیست، همینطوری فقط با نگاه کردن به سورس نمیشه چیزی گفت (شاید هم بشه ولی به زحمتش نمیارزه).
یک پروژه کوچک که این مشکل را نشان بده آپلود کنید همه راحتر امتحان میکنند و شما هم زودتر جواب میگیرید.

دقیقا :چشمک:


دوست عزیز، بهتره که شما کدتون رو (یا فایل همین قسمت برنامه) رو آپلود کنید تا دوستانی که میخوان راهنمایی کنن دچار ابهام نشند. (سئوال شما زیاد واضح نیست.)

چون کسی وقتی برای خوندن کد دیگران نداره.

Pioneers
شنبه 01 دی 1386, 22:35 عصر
بفرمائید: اینهم نمونه برنامه

Pioneers
دوشنبه 03 دی 1386, 00:00 صبح
همچنان چشم انتظار پاسخم.