dotnet/winforms

Proposal: add SelectionStart and SelectionEnd to TrackBar

Open

#2,642 opened on Jan 6, 2020

View on GitHub
 (10 comments) (2 reactions) (2 assignees)C# (922 forks)batch import
api-approveddesign-discussionhelp wantedtenet-compatibility-OS

Repository metrics

Stars
 (4,100 stars)
PR merge metrics
 (Avg merge 14d 22h) (56 merged PRs in 30d)

Description

You can set the TBS_ENABLESELRANGE on TrackBar and send the TBM_SETSELSTART and TBM_SETSELSTART to set the selection range See docs

Example: Screenshot 2020-01-06 at 16 31 38 Screen Recording 2020-01-06 at 04 32 pm

We could add the following APIs to TrackBar:

public class TrackBar
{
    ...
    public bool ShowSelectionRange { get; set; }
    public int SelectionStart { get; set; }
    public int SelectionEnd { get; set; }
    ...
}

Discussion

  • What should the default values of SelectionStart and SelectionEnd be if we haven't enabled selections? In my experiments I set them to 0 which worked nicely.
  • In my prototype implementation, I set ShowSelectionRange to true if the user sets SelectionStart/SelectionEnd. One option could be to remove ShowSelectionRange and set SelectionStart/SelectionEnd to minus one or have some logic that sets the TrackBar style to TBS_ENABLESELRANGE if it is set to a custom value. However, this is negative as it leaves us with no way of removing the selection indicators once they've been created.
  • Do we want SelectionStart and SelectionEnd or SelectionStart and SelectionLength or some sort of SelectionRange struct that encapsulates this? (e.g MonthCalendar.SelectionRange)

Contributor guide