سؤال

كيف يمكنني إضافة انقر نقرا مزدوجا فوق الحدث إلى السيطرة على هذا لا يكون انقر نقرا مزدوجا فوق الحدث =P

مثل مربع التحرير والسرد!!!

هل كانت مفيدة؟

المحلول

و<sarcasm>Use المزيد من علامات التعجب - التي عادة ما يحصل على هذه المهمة </sarcasm>

ولكن، على محمل الجد، لا يمكنك. محاولة التحقق من وجود بسيط "انقر" الحدث ومن ثم معرفة ما إذا كان الوقت بين اثنين من النقرات المتتالية صغير بما فيه الكفاية. لست متأكدا من حيث يمكنك العثور على نظام انقر نقرا مزدوجا فوق توقيت بالرغم من ذلك. محاولة غوغلينغ لذلك.

ومع ذلك، أود أن نفكر بجدية مرتين حول إضافة مثل هذا السلوك غير قياسي إلى عنصر تحكم القياسية. المستخدمين عادة لا يتوقع هذا حتى يتمكنوا من المرجح جدا أن يكون غير راض عن ذلك. تذكر - أفضل UI هو الذي يوفر للمستخدم أقل المفاجآت. التفكير أفضل وسيلة أخرى لتفعل ما يحاولون القيام به.

نصائح أخرى

والواقع على System.Windows.Forms.ComboBox لديه حدث DoubleClick، انها مخفية فقط من المحرر الخاص بك:

    // Summary:
    //     This event is not relevant for this class.
    [EditorBrowsable(EditorBrowsableState.Never)]
    [Browsable(false)]
    public event EventHandler DoubleClick;

وانا التخمين اختاروا لإخفاء الحدث لأنه لن من أي وقت مضى أن يسمى:)

والجواب القصير هو <وأ href = "http://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/36f03ba0-f7d9-4f94-9565-1453e24cf4ee" يختلط = "نوفولو noreferrer" > كنت لا .

والجواب طويلة هي الاشتراك في الحدث Click ومعرفة ما اذا كان يسمى الحدث انقر فوق آخر في ميلي ثانية جنسي الماضية، <وأ href = "http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet- CSHARP / 17131 / انقر نقرا مزدوجا فوق على اساس منسدل "يختلط =" نوفولو noreferrer "> كما هو الحال في هذا المنصب .

كنت لا انقر نقرا مزدوجا فوق ذلك, أنت تجعل الأمر يبدو كما لو كنت النقر المزدوج ذلك ، إذا كنت الشر بما فيه الكفاية.

private void box_MouseDown(object sender, MouseEventArgs e)
{
      if (e.Button == MouseButtons.Left)
      {
         TimeSpan Current = DateTime.Now - LastClick;
         TimeSpan DblClickSpan =
         TimeSpan.FromMilliseconds(SystemInformation.DoubleClickTime);

         if (Current.TotalMilliseconds <= DblClickSpan.TotalMilliseconds)
         {
     // Code to handle double click goes here
         }

         LastClick = DateTime.Now;
      }
}

انقر نقرا مزدوجا فوق مربع تحرير وسرد

ووفقا لنسختي من العاكس، System.Windows.Forms.ComboBox، من System.Windows.Forms التجمع، الإصدار 2.0.0.0، لديها حدث DoubleClick.

والتحكم مربع نص داخل منسدل يسرق / يستهلك حدث DoubleClick، لذلك عليك استخدام الحدث اضغط على تحرير وسرد للاستماع لكل من النقرات؟

المصدر

وكنت غير قادر على العثور على طريقة (بالنظر إلى أن مربع النص يأكل الحدث). رأيت أيضا علما بأن النقر المزدوج ليست ذات الصلة لهذه السيطرة. أنا أيضا لم يجد وسيلة لالتقاط الحدث من سيطرة النص الداخلية

وقد تحتاج إلى إعادة التفكير في ماذا تريد تغيير السلوك من الافتراضي (أي تحديد النص الحالي). إذا قمت بتغيير السلوك المتوقع كثيرا، ويصبح التطبيق الخاص بك أكثر صعوبة في الاستخدام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top