We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on : Nov 16th 2018).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

Detecting a doubleclick on a day inside MonthCalendarAdv

Thread ID:

Created:

Updated:

Platform:

Replies:

99240 May 9,2011 06:28 PM UTC May 17,2011 11:11 AM UTC WinForms 5
loading
Tags: Tools
Joel McIntyre
Asked On May 9, 2011 06:28 PM UTC

(Syncfusion v. 9.103.0.20 in a .NET 3.5 project)

I'm using the MonthCalendarAdv control, and am trying to respond to the user doubleclicking on a date.

I've got it working, but my way seems like a hack. (Sample code below)

Do you have a better way?

---
I've hooked the monthCalendarAdv1's double-click event. It fires whenever any of the MonthCalendarAdv is double-clicked: header, change month buttons, today button, etc.

The only way I found to figure out if a date was double-clicked was to use the mouse position and see if the child_control clicked was a GridControl. That seems like a hack - and if Syncfusion ever changes internal implementation of MonthCalendarAdv, it would break my code.

Is there a way to know this info directly rather than depending on this mouse-position child-control hack?

// in _DoubleClick event
private void monthCalendarAdv1_DoubleClick(
object sender,
EventArgs e)
{
// Get the child control at the mouse location
Control control =
monthCalendarAdv1.
GetChildAtPoint
(monthCalendarAdv1.
PointToClient(
Control.MousePosition));

if (control.GetType().Name == "GridControl")
{
// Day was doubleclicked, handle it
}
else
{
// some other part of monthCalendarAdv control clicked
}
}


Thanks,
Joel


Joel McIntyre
Replied On May 9, 2011 07:24 PM UTC

And with further testing my hack above, it helps but is far short of perfect. Better behaved hack is to start with the above, but set a 'bool doubleclicked;' flag to true on "doubleclick in grid" and false in a monthCalendarAdv1_Click handler.

Then, in all DateSelected handler calls, trigger the "date was doubleclicked" if the doubleclicked flag is true.

--

I can almost get away with "Doubleclick call followed by DateSelected call" for all cases, but then doubleclicking the Today button also triggers "doubleclick on day" code.

--

So, if there is a non-hack way to accomplish this, I'm very interested!


Jeraldes J [Syncfusion]
Replied On May 13, 2011 04:47 PM UTC

Hi Joel,

Thanks for your interest in using Syncfusion Products.

We have modified the condition checking in your code snippet. which would provide you the better solution.

Please refert the same from the following code snippet.

[Code Snippet]
Control control = monthCalendarAdv1.GetChildAtPoint(monthCalendarAdv1.PointToClient(Control.MousePosition));

if (control is GridControl)//.GetType().Name == "GridControl")
{
// Day was doubleclicked, handle it
MessageBox.Show("Monthcalender Double Clicked");
}
else
{
// some other part of monthCalendarAdv control clicked
}

Please let us know if you have any concern.

Regards,
J Jerakdes


Jeraldes J [Syncfusion]
Replied On May 13, 2011 04:47 PM UTC

Hi Joel,

Thanks for your interest in using Syncfusion Products.

We have modified the condition checking in your code snippet. which would provide you the better solution.

Please refert the same from the following code snippet.

[Code Snippet]
Control control = monthCalendarAdv1.GetChildAtPoint(monthCalendarAdv1.PointToClient(Control.MousePosition));

if (control is GridControl)//.GetType().Name == "GridControl")
{
// Day was doubleclicked, handle it
MessageBox.Show("Monthcalender Double Clicked");
}
else
{
// some other part of monthCalendarAdv control clicked
}

Please let us know if you have any concern.

Regards,
J Jeraldes


Joel McIntyre
Replied On May 13, 2011 08:40 PM UTC

Thanks, if this is indeed the best approach you've got, then I'll consider it good enough for now.


(On "is GridControl" vs. "Name = "GridControl"", I wasn't sure if hard binding to a GridControl type at compile time made the code more fragile since I'm already tying to internal behavior. But either way works for current implementation.)

And please do consider some sort of "Date Activated" event when a day is double-clicked (or enter key, or similar common "activation") as a future release feature request!

Many Thanks,
Joel


Jeraldes J [Syncfusion]
Replied On May 17, 2011 11:11 AM UTC

Hi Joel,

Thanks for your update.

By using the DateSelected event we can able to get the date that is selected from the MonthCalender. Please refer the UserGuide for more clarification.

[User Guide]
http://help.syncfusion.com/ug_91/User%20Interface/Windows%20Forms/Tools/Documents/333163howtoidentifythecurrentselecteddateatruntime.htm

Please let us know if you have any concern.

Regards,
J Jeraldes


CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

;