نمایش نتایج 1 تا 4 از 4

نام تاپیک: غیر اتوماتیک کردن toolTip

  1. #1

    غیر اتوماتیک کردن toolTip

    با سلام خدمت دوستان
    می خواستم بدونم که راهی وجود داره که کنترل toolTip رو خودمون بدست بگیریم و هروقت خواستیم اونو نشون بدیم و هر وقت خواستیم مخفی کنیم و دیگه با ماوس کارنکنه یعنی وقتی ماوس رو رو کنترل ببریم toolTip خود به خود به نمایش در نیاد آیا راهی هست یا نه

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

    toolTip1.Show("لطفا نام بانک را وارد نمایید .", txtBankname, 4000);


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

  2. #2
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: غیر اتوماتیک کردن toolTip

    با سلام
    دوست عزیز شما برای این کار می توانید یک ایونت هندلر برای رویداد Popup مربوط به toolTip بنویسید.
    برای توضیحات بیشتر سناریو زیر رو ملاحظه کنید:
    فرض کنید شما به کاربر این امکان را می دهید که انتخاب کند آیا toolTip ها نمایش داده بشوند یا نه ما نتیجه آن را در متغییر از نوع bool با نام ShowTOOL قرار می دهیم.
    حال در در زمان لود فرم به tooltip مقدار داده و یک ایونت هندلر برای popup اضافه می کنیم.
      private void Form2_Load(object sender, EventArgs e)
    {
    toolTip1.SetToolTip(button1, "دیدی ندیدی");

    toolTip1.Popup += new PopupEventHandler(toolTip1_Popup);
    }
    و در نهایت خود ایونت هندلر رو به شکل زیر می نویسیم.
      void toolTip1_Popup(object sender, PopupEventArgs e)
    {
    if (ShowTOOL == false)
    {
    e.Cancel = true;//<--یا این دستور

    e.ToolTipSize = new Size(0, 0);//<-- یا این دستور
    }
    }
    توضیح اینکه هر یک از دستور های درون if را که بنویسید نتیجه خواهد داد.
    موفق باشید.

  3. #3

    نقل قول: غیر اتوماتیک کردن toolTip

    با تشکر از دوست عزیر
    ولی مثل اینکه منظور منو متوجه نشدین اصلا کاربر برنامه نقشی تو این قضیه نداره
    و من خودم می خوام که کنترل رو بدست بگیرم مثلا فرض کن که یک تکست باکس داریم که کد مشتری رو دریافت می کنه به محض این که کاربر کدی رو تو این تکست باکس می زنه برنامه اطلاعات او مشتری رو تو تکست باکسهای مربوطه لود می کنه و اگه کد مشتری نامعتبر باشه به جای پیغام خطا و یا مسیج باکس از تول تیپ استفاده کردم که تو ی یک تول تیپ مینویسه که مشتری با این کد وجود نداره و حالا مشکل من اینه که موقعی که یک کد نامعتبر در تکست باکس بزنیم و بعد کنترل برنامه به یک تکست باکس دیگه می ره حالا با تب یا کلیک ماوس وقتی که کنترل برنامه به تکست باکس کد مشتری برمی گرده یعنی تو رویداد Enter تکست باکس من دوباره چک می کنم که کد معتبرهستش یا نه اگه نبود دوباره تول تیپ رو نشون می دم ولی حالا اگه با ماوس کلیک کنیم روی تکست باکس همه چی به هم میریزه یعنی وقتی ماوس رو تکست باکس هست تول تیپ نشون داده می شه و وقتی ماوس می ره روی یک کنترل دیگه تول تیپ مخفی می شه و من نمی خوام این طور بشه
    با تشکر از دوستان

  4. #4
    کاربر تازه وارد آواتار khaste_007
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    تهران
    پست
    98

    نقل قول: غیر اتوماتیک کردن toolTip

    نقل قول نوشته شده توسط rezatati مشاهده تاپیک
    ولی مثل اینکه منظور منو متوجه نشدین اصلا کاربر برنامه نقشی تو این قضیه نداره
    با سلام دوباره
    دوست عزیز مثل اینکه شما جواب من رو با دقت نخوندید این فقط یک مثال بود و شما مثلا می توانید هر شرطی را با توجه به نیاز خودتون در if چک کنید مثلا برای این مسئله که شما در اینجا بیان کردید در حال معمولی متغییر showTool را برابر false قرار دهید تا با رفتن کاربر بر روی تکست باکس چیزی نمایش داده نشود و فقط وقتی که خواستید پیغام شما ظاهر شود showTool را برابر true قرار دهید و تمام.
    و بعد از تمام، باید بگم که آقا این سناریویی که شما در پست دومتون گفتید راه خیلی ساده تر و البته استاندارد داره و اون استفاده از کنترل ErrorProvider هست استفاده از اون شبیه همین toolTip هست من یه مثال کوچولو اینجا قرار میدم امیدوارم انتظار نداشته باشی دقیقا با مسئله شما جور باشه و خودت تغییرات لازم رو بدی.
    این مثال یک مثال ساده از بکار گیری ErrorProvider هست.
    یک فرم جدید بسازید و یک TextBox یک Button و یک ErrorProvider به آن اضافه کنید.
    سپس بروی Button دو بار کلیک و در رویداد کلیک آن کد زیر را بنویسید.
      private void button1_Click(object sender, EventArgs e)
    {
    errorProvider1.Clear();
    errorProvider1.SetError(textBox1, "این یک پیغام خطای نمونه می باشد");
    }
    حالا فرم رو اجرا و بروی دکمه کلیک کنید و نتیجه رو مشاهده کنید.
    توضیح: با توجه به منطق برنامه خود، این کارها را می توانید در هر رویدادی انجام دهید و یا طبق شرایط خاصی، مثلا نبودن اطلاعات در دیتا بیس و ... پیغام را نشان دهید و پس از برطرف شدن شرایط، مثلا با کدerrorProvider1.Clear(); پیغام خطا را از جلوی دید کاربر حذف کنید.
    موفق و پیروز باشید.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •