dotnet/winforms

Proposal: add SelectionStart and SelectionEnd to TrackBar

Open

#2.642 geöffnet am 6. Jan. 2020

Auf GitHub ansehen
 (10 Kommentare) (2 Reaktionen) (2 zugewiesene Personen)C# (922 Forks)batch import
api-approveddesign-discussionhelp wantedtenet-compatibility-OS

Repository-Metriken

Stars
 (4.100 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 14T 22h) (56 gemergte PRs in 30 T)

Beschreibung

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