Skip to content

MultiSelect

Summary

A control that shows list of unique items and allows user to select multiple items from the list

Signature

1
public class MultiSelect : Control

Namespace

cAlgo.API

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 using cAlgo.API;
 namespace cAlgo.Robots
 {
     [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
     public class MultiSelectTest : Robot
     {
         private MultiSelect _multiSelect;
         [Parameter(DefaultValue = false)]
         public bool Styled { get; set; }
         protected override void OnStart()
         {
             _multiSelect = new MultiSelect();
             if (Styled)
             {
                 _multiSelect.BackgroundColor = Color.Red;
                 _multiSelect.FontWeight = FontWeight.UltraBold;
                 _multiSelect.ForegroundColor = Color.Yellow;
                 _multiSelect.FontSize = 40;
                 _multiSelect.FontFamily = "Comic Sans MS";
             }
             for (var i = 0; i < 10; i++)
             {
                 _multiSelect.AddItem($"Item {i}");
             }
             _multiSelect.SelectedItemsChanged += args => Print($"OnSelectedItemsChanged: {string.Join(", ", _multiSelect.SelectedItems)}");
             var addItemTextBox = new TextBox();
             var addItemButton = new Button() { Text = "Add Item" };
             addItemButton.Click += args =>
             {
                 if (string.IsNullOrWhiteSpace(addItemTextBox.Text))
                     return;
                 Print($"Add Result of {addItemTextBox.Text}: {_multiSelect.AddItem(addItemTextBox.Text)}");
             };
             var removeItemTextBox = new TextBox();
             var removeItemButton = new Button() { Text = "Remove Item" };
             removeItemButton.Click += args =>
             {
                 if (string.IsNullOrWhiteSpace(removeItemTextBox.Text))
                     return;
                 Print($"Remove Result of {removeItemTextBox.Text}: {_multiSelect.RemoveItem(removeItemTextBox.Text)}");
             };
             var selectItemTextBox = new TextBox();
             var selectItemButton = new Button() { Text = "Select Item" };
             selectItemButton.Click += args =>
             {
                 if (string.IsNullOrWhiteSpace(selectItemTextBox.Text))
                     return;
                 Print($"Select Result of {selectItemTextBox.Text}: {_multiSelect.SelectItem(selectItemTextBox.Text)}");
             };
             var unselectItemTextBox = new TextBox();
             var unselectItemButton = new Button() { Text = "Unselect Item" };
             unselectItemButton.Click += args =>
             {
                 if (string.IsNullOrWhiteSpace(unselectItemTextBox.Text))
                     return;
                 Print($"Unselect Result of {unselectItemTextBox.Text}: {_multiSelect.UnselectItem(unselectItemTextBox.Text)}");
             };
             var selectAllItemsButton = new Button() { Text = "Select All Items" };
             selectAllItemsButton.Click += args =>
             {
                 _multiSelect.SelectAllItems();
             };
             var unselectAllItemsButton = new Button() { Text = "Unselect All Items" };
             unselectAllItemsButton.Click += args =>
             {
                 _multiSelect.UnselectAllItems();
             };
             var showItemsButton = new Button() { Text = "Show Items" };
             showItemsButton.Click += args => Print($"Items: {string.Join(", ", _multiSelect.Items)}");
             var showSelectedItemsButton = new Button() { Text = "Show Selected Items" };
             showSelectedItemsButton.Click += args => Print($"Selected Items: {string.Join(", ", _multiSelect.SelectedItems)}");
             var panel = new StackPanel() { Orientation = Orientation.Vertical, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center };
             panel.AddChild(_multiSelect);
             panel.AddChild(addItemTextBox);
             panel.AddChild(addItemButton);
             panel.AddChild(removeItemTextBox);
             panel.AddChild(removeItemButton);
             panel.AddChild(selectItemTextBox);
             panel.AddChild(selectItemButton);
             panel.AddChild(unselectItemTextBox);
             panel.AddChild(unselectItemButton);
             panel.AddChild(selectAllItemsButton);
             panel.AddChild(unselectAllItemsButton);
             panel.AddChild(showItemsButton);
             panel.AddChild(showSelectedItemsButton);
             Chart.AddControl(panel);
         }
     }
 }
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 import clr
 clr.AddReference("cAlgo.API")
 # Import cAlgo API types
 from cAlgo.API import *
 # Import trading wrapper functions
 from robot_wrapper import *
 class Test():
     def on_add_item_button_clicked(self, args):
         if self.addItemTextBox.Text is None:
             return
         print(f"Add Result of {self.addItemTextBox.Text}: {self.multiSelect.AddItem(self.addItemTextBox.Text)}")
     def on_remove_item_button_clicked(self, args):
         if self.removeItemTextBox.Text is None:
             return
         print(f"Remove Result of {self.removeItemTextBox.Text}: {self.multiSelect.RemoveItem(self.removeItemTextBox.Text)}")
     def on_select_item_button_clicked(self, args):
         if self.selectItemTextBox.Text is None:
             return
         print(f"Select Result of {self.selectItemTextBox.Text}: {self.multiSelect.SelectItem(self.selectItemTextBox.Text)}")
     def on_unselect_item_button_clicked(self, args):
         if self.unselectItemTextBox.Text is None:
             return
         print(f"Unselect Result of {self.unselectItemTextBox.Text}: {self.multiSelect.UnselectItem(self.unselectItemTextBox.Text)}")        
     def on_start(self):
         self.multiSelect = MultiSelect()
         # Styled is a boolean parameter defined in C# file of cBot
         if api.Styled:
             self.multiSelect.BackgroundColor = Color.Red
             self.multiSelect.FontWeight = FontWeight.UltraBold
             self.multiSelect.ForegroundColor = Color.Yellow
             self.multiSelect.FontSize = 40
             self.multiSelect.FontFamily = "Comic Sans MS"
         for i in range(10):
             self.multiSelect.AddItem(f"Item {i}")
         self.multiSelect.SelectedItemsChanged += lambda args: print(f"OnSelectedItemsChanged: {", ".join(self.multiSelect.SelectedItems)}")
         self.addItemTextBox = TextBox()
         addItemButton = Button()
         addItemButton.Text = "Add Item"
         addItemButton.Click += self.on_add_item_button_clicked
         self.removeItemTextBox = TextBox()
         removeItemButton = Button()
         removeItemButton.Text = "Remove Item"
         removeItemButton.Click += self.on_remove_item_button_clicked
         self.selectItemTextBox = TextBox()
         selectItemButton = Button()
         selectItemButton.Text = "Select Item"
         selectItemButton.Click += self.on_select_item_button_clicked
         self.unselectItemTextBox = TextBox()
         unselectItemButton = Button()
         unselectItemButton.Text = "Unselect Item"
         unselectItemButton.Click += self.on_unselect_item_button_clicked
         selectAllItemsButton = Button()
         selectAllItemsButton.Text = "Select All Items"
         selectAllItemsButton.Click += lambda _: self.multiSelect.SelectAllItems()
         unselectAllItemsButton = Button()
         unselectAllItemsButton.Text = "Unselect All Items"
         unselectAllItemsButton.Click += lambda _: self.multiSelect.UnselectAllItems()
         showItemsButton = Button()
         showItemsButton.Text = "Show Items"
         showItemsButton.Click += lambda _: print(f"Items: {", ".join(self.multiSelect.Items)}")
         showSelectedItemsButton = Button()
         showSelectedItemsButton.Text = "Show Selected Items"
         showSelectedItemsButton.Click += lambda _: print(f"Selected Items: {", ".join(self.multiSelect.SelectedItems)}")
         panel = StackPanel()
         panel.Orientation = Orientation.Vertical
         panel.HorizontalAlignment = HorizontalAlignment.Center
         panel.VerticalAlignment = VerticalAlignment.Center
         panel.AddChild(self.multiSelect)
         panel.AddChild(self.addItemTextBox)
         panel.AddChild(addItemButton)
         panel.AddChild(self.removeItemTextBox)
         panel.AddChild(removeItemButton)
         panel.AddChild(self.selectItemTextBox)
         panel.AddChild(selectItemButton)
         panel.AddChild(self.unselectItemTextBox)
         panel.AddChild(unselectItemButton)
         panel.AddChild(selectAllItemsButton)
         panel.AddChild(unselectAllItemsButton)
         panel.AddChild(showItemsButton)
         panel.AddChild(showSelectedItemsButton)
         api.Chart.AddControl(panel)

Methods

SelectItem

Summary

Selects item on the MultiSelect

Signature

1
public bool SelectItem(string item)

Parameters

Name Type Description
item string The item that will be selected on MultiSelect

Return Value

bool

UnselectItem

Summary

Unselects item on the MultiSelect

Signature

1
public bool UnselectItem(string item)

Parameters

Name Type Description
item string The item that will be unselected on MultiSelect

Return Value

bool

SelectItems

Summary

Selects items on the MultiSelect

Signature

1
public void SelectItems(IEnumerable<string> items)

Parameters

Name Type Description
items IEnumerable The items that will be selected on MultiSelect

Return Value

void

UnselectItems

Summary

Unselects items on the MultiSelect

Signature

1
public void UnselectItems(IEnumerable<string> items)

Parameters

Name Type Description
items IEnumerable The items that will be unselected on MultiSelect

Return Value

void

SelectAllItems

Summary

Selects all items on the MultiSelect

Signature

1
public void SelectAllItems()

Return Value

void

UnselectAllItems

Summary

Unselects all items on the MultiSelect

Signature

1
public void UnselectAllItems()

Return Value

void

AddItem

Summary

Adds a new item to the MultiSelect

Signature

1
public bool AddItem(string item)

Parameters

Name Type Description
item string The string value that will be added on MultiSelect

Return Value

bool

RemoveItem

Summary

Removes an existing item from the MultiSelect

Signature

1
public bool RemoveItem(string item)

Parameters

Name Type Description
item string The string value that will be removed from MultiSelect

Return Value

bool

Properties

Items

Summary

Get the read-only copy of MultiSelect items

Signature

1
public IReadonlyList<string> Items {get;}

Return Value

IReadonlyList

SelectedItems

Summary

Get the read-only copy of MultiSelect selected items

Signature

1
public IReadonlyList<string> SelectedItems {get;}

Return Value

IReadonlyList

Events

SelectedItemsChanged

Summary

This event will trigger if the MultiSelect selected items changed

Signature

1
public event Action<MultiSelectSelectedItemsChangedEventArgs> SelectedItemsChanged;