dotnet/winforms

Proposal: add SelectionStart and SelectionEnd to TrackBar

オープン

#2,642 opened on 2020/01/06

 (10 件のコメント) (2 件のリアクション) (2 人の担当者)C# (922 件のフォーク)batch import
api-approveddesign-discussionhelp wantedtenet-compatibility-OS

Repository metrics

Stars
 (4,100 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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)

コントリビューターガイド