С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 30.01.2021
Сообщений: 7
WPF

Как правильно сделать выпадающее боковое меню и д.р. Новичку

01.02.2021, 18:19. Показов 6066. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я только начал изучать WPF и C#. И вообще серьёзно взялся за программирование впервые. У меня вопросы, как у начинающего.
У меня есть некий массив с данными. С помощь Check Box'ов из него нужно выбрать некоторые позиции ранее упомянутого массива. Как это можно сделать? А затем из выбранных позиций выбрать одну по средствам рандома, ну это я как постараюсь сам прикручу)))) Из массива рандомно выбирать умею) И как правильно сделать выпадающее меню под эти Chek Box'ы?
Насколько реально всё это сделать на WPF. Так же использую Material Design для стиля.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2021, 18:19
Ответы с готовыми решениями:

Боковое выпадающее меню перекрывается контентом
Добрый день подскажите а такую проблему решить можно http://auradekor.ru/

Как сделать адаптивное боковое выезжающие меню?
Всем привет. Есть push и slide menu, они выезжают сбоку. Slide menu - поверх контента, а Push menu сдвигает контент. Как сделать такие меню...

Как сделать многоуровневое боковое меню для WooCommerce?
Привет Какой плагин подойдет, чтобы сделать меню для Woocommerce, подобное этому? Как тут: https://www.carid.com/ Спасибо.

12
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
01.02.2021, 18:47
Цитата Сообщение от JeremyProg Посмотреть сообщение
У меня есть некий массив с данными....
Покажите коды того что уже есть.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
01.02.2021, 21:36
Цитата Сообщение от JeremyProg Посмотреть сообщение
как правильно сделать выпадающее меню под эти Chek Box'ы?
Пример реализации.
Используются типы из Простые реализации для тем на форуме.

Сначала тип для одного бита:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using Simplified;
 
namespace JeremyProg
{
    public class BooleanItem : BaseInpc
    {
        private bool _value;
        private string _title;
 
        public bool Value { get => _value; set => Set(ref _value, value); }
        public string Title { get => _title; set => Set(ref _title, value); }
    }
}
Потом ViewModel:
C#
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
using Simplified;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
 
namespace JeremyProg
{
    public class BooleansViewModel : BaseInpc
    {
        public ObservableCollection<BooleanItem> Booleans { get; } = new ObservableCollection<BooleanItem>();
 
        private RelayCommand _bitSelectionCommand;
        public RelayCommand BitSelectionCommand => _bitSelectionCommand
            ?? (_bitSelectionCommand = new RelayCommand<IList<BooleanItem>>(BitSelectionMethod, BitSelectionCanMethod));
 
        private void BitSelectionMethod(IList<BooleanItem> parameter)
        {
            // Здесь работа с parameter
            // Для примера вывод MessageBox.
 
            string indexes = "";
            for (int i = 0; i < parameter.Count; i++)
            {
                if (parameter[i].Value)
                    indexes = $"{indexes}\r\n{i}: {parameter[i].Title}";
            }
 
            MessageBox.Show("Индексы веленных бит: " + indexes);
        }
 
        private bool BitSelectionCanMethod(IList<BooleanItem> parameter)
            => parameter.Any(bit => bit.Value);
    }
}
Окно:
XML
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
<Window x:Class="JeremyProg.BooleansWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:JeremyProg" xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="BooleansWindow" Height="450" Width="800"
        DataContext="{DynamicResource viewModel}">
    <FrameworkElement.Resources>
        <local:BooleansViewModel x:Key="viewModel">
            <local:BooleansViewModel.Booleans>
                <local:BooleanItem Value="True" Title="Первый"/>
                <local:BooleanItem Value="False" Title="Второй"/>
                <local:BooleanItem Value="True" Title="Третий"/>
                <local:BooleanItem Value="False" Title="Четвёртый"/>
                <local:BooleanItem Value="True" Title="Пятый"/>
                <local:BooleanItem Value="False" Title="Шестой"/>
                <local:BooleanItem Value="True" Title="Седьмлй"/>
                <local:BooleanItem Value="False" Title="Восьмой"/>
            </local:BooleansViewModel.Booleans>
        </local:BooleansViewModel>
    </FrameworkElement.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Expander Header="Нажми чтобы раскрыть" VerticalAlignment="Top">
            <ItemsControl ItemsSource="{Binding Booleans}" HorizontalContentAlignment="Stretch">
                <ItemsControl.ItemTemplate>
                    <DataTemplate DataType="{x:Type local:BooleanItem}">
                        <Border Background="LightBlue" Margin="5"
                                BorderThickness="1" BorderBrush="Blue">
                            <CheckBox IsChecked="{Binding Value}" Margin="5"
                                  Content="{Binding Title}"/>
                        </Border>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </Expander>
        <Button Grid.Column="1" Content="Обработать выделенные"
                Command="{Binding BitSelectionCommand}"
                CommandParameter="{Binding Booleans}"
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Padding="15,5"/>
    </Grid>
</Window>
Архив с исходниками: JeremyProg.7z
1
0 / 0 / 0
Регистрация: 30.01.2021
Сообщений: 7
02.02.2021, 06:29  [ТС]
Окно XML:
XML
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
Title="Character Selection" 
        FontFamily="Source Sans Pro"
        MaxHeight="400" 
        MaxWidth="920">
    <Border MinWidth="80" 
            MinHeight="60" 
            CornerRadius="30" 
            VerticalAlignment="Top" 
            Background="White" Height="374">
        <StackPanel Margin="10,9,9.6,10.4">
            <TextBlock Text="Какие легенды у тебя есть?" 
                    HorizontalAlignment="Center" 
                    FontSize="30" 
                    Margin="30"/>
            <Grid Height="257" Margin="0,0,-0.4,0">
                <Button x:Name="ButtonAllCharacters"
                        Style="{StaticResource MaterialDesignFlatDarkBgButton}"
                        HorizontalAlignment="Left"
                        Margin="20"
                        Content="Все легенды"
                        Click="ButtonAllCharacters_Click"/>
                <Button x:Name="ButtonCharactersSelection"
                        HorizontalAlignment="Right"
                        Margin="20"
                        Content="Выбрать из списка"
                        Click="ButtonCharactersSelection_Click"/>
                <Label Content="Значит ты будешь играть на персонаже: "
                        HorizontalAlignment="Center"
                        FontSize="26"
                        FontStyle="Oblique" Margin="122,0,146,0" Width="474"/>
                <TextBlock x:Name="TextCharacterOnGame"
                        Margin="30" FontSize="30"
                        HorizontalAlignment="Center"/>
                <Button x:Name="ButtonOnlyStartCharacters"
                        HorizontalAlignment="Left"
                        Content="Только Стартовые Легенды"
                        Click="ButtonOnlyStarCharacters_Click"
                        Margin="20 70 0 0"
                        Style="{StaticResource MaterialDesignFlatDarkBgButton}"/>
 
            </Grid>
            <StackPanel Height="1" Margin="0,0,-0.4,0"/>
            <GridSplitter HorizontalAlignment="Stretch" Height="100"/>
        </StackPanel>
    </Border>
</Window>
Код C# который будет дописываться
C#
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
namespace Apex
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
        }
 
        public void ButtonAllCharacters_Click(object sender, RoutedEventArgs e)
        {
            string[] CharacterOnGame = new string[16];
            CharacterOnGame[0] = "Бладхаунд";
            CharacterOnGame[1] = "Рейф";
            CharacterOnGame[2] = "Патфайндер";
            CharacterOnGame[3] = "Каустик";
            CharacterOnGame[4] = "Лайфлайн";
            CharacterOnGame[5] = "Гибралтар";
            CharacterOnGame[6] = "Бангалор";
            CharacterOnGame[7] = "Мираж";
            CharacterOnGame[8] = "Крипто";
            CharacterOnGame[9] = "Лоба";
            CharacterOnGame[10] = "Ревенант";
            CharacterOnGame[11] = "Хорайзон";
            CharacterOnGame[12] = "Фьюз";
            CharacterOnGame[13] = "Рампарт";
            CharacterOnGame[14] = "Ваттсон";
            CharacterOnGame[15] = "Октейн";
            Random r = new Random();
            string randsror = CharacterOnGame[r.Next(0,CharacterOnGame.Length)];
            TextCharacterOnGame.Text = randsror;
        }
        public void ButtonOnlyStarCharacters_Click(object sender, RoutedEventArgs e)
        {
            string[] CharacterOnGame = new string[6];
            CharacterOnGame[0] = "Бладхаунд";
            CharacterOnGame[1] = "Рейф";
            CharacterOnGame[2] = "Патфайндер";
            CharacterOnGame[3] = "Лайфлайн";
            CharacterOnGame[4] = "Гибралтар";
            CharacterOnGame[5] = "Бангалор";
 
            Random r = new Random();
            string randsror = CharacterOnGame[r.Next(0, CharacterOnGame.Length)];
            TextCharacterOnGame.Text = randsror;
        }
        public void ButtonCharactersSelection_Click(object sender, RoutedEventArgs e)
        {
           
 
        }
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.02.2021, 07:33
Цитата Сообщение от JeremyProg Посмотреть сообщение
Я только начал изучать WPF и C#. И вообще серьёзно взялся за программирование впервые. У меня вопросы, как у начинающего.
Начните с изучения C#, новичкам в WPF очень сложно разобраться.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
02.02.2021, 08:20
Цитата Сообщение от JeremyProg Посмотреть сообщение
Окно XML:
Хоть чуток в компоновке разберитесь.
Это же не Формы.
Если вам не нужна WPF компоновка, какой, вообще, смысл в использовании WPF?

Добавлено через 2 минуты
Из темы "WPF vs WinForms (для начинающих)" по ссылке в подписи моего поста:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
К сожалению, конструктор Visual Studio не помогает в освоении компоновки WPF. При вставке элемента (как это делается в конструкторе WinForms) элемент жёстко позиционируется с помощью свойства Margin элемента. Из-за этого начинающие поддаются заблуждению, что так и надо делать. Я сам по началу попал в этот капкан.

Margin - это свойство для задания расстояния между элементами, а не положения элемента!

Из-за этой особенности конструктора WPF, элементы окна не надо создавать перетаскиванием на окно. Их надо прописывать в XAML окна "в ручную". Правильная компоновка элементов делает окно адаптивным. Элементы в нём сами меняют свои размеры и положение в зависимости от размеров окна и окружающих элементов. Всё это является "внутренним" изначально присущим свойством WPF элементов и не требует поддержки в коде C# в CB окна.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
02.02.2021, 09:39
Цитата Сообщение от JeremyProg Посмотреть сообщение
начал изучать WPF и C#
Окно сначала разбивается на регионы чья компоновка зависит друг от джруга.
Каждый регион на подрегионы.
И разбивка одного региона не должна влиять на разбивку другого.
И так до уровня где подрегионом будет уже определённый UI элемент.

И вы же работаете в Шарпе, а не на Фортране.
Так используйте ООП, а не процедурное програмирование.

Вот пример компоновки и VM, насколько понял идею заложенную вами:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace Apex
{
    public class LegendDto
    {
        public bool IsStarting { get; }
        public string Title { get; }
 
        public LegendDto(bool isStarting, string title)
        {
            IsStarting = isStarting;
            Title = title;
        }
    }
}
C#
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
using Simplified;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
 
namespace Apex
{
    public class SelectLegendVM : BaseInpc
    {
        private static readonly ReadOnlyCollection<LegendDto> allLegends = Array.AsReadOnly(new LegendDto[]
            {
 
                new LegendDto(true, "Бладхаунд"),
                new LegendDto(true, "Рейф"),
                new LegendDto(true, "Патфайндер"),
                new LegendDto(true, "Лайфлайн"),
                new LegendDto(true, "Гибралтар"),
                new LegendDto(true, "Бангалор"),
                new LegendDto(false, "Каустик"),
                new LegendDto(false, "Мираж"),
                new LegendDto(false, "Крипто"),
                new LegendDto(false, "Лоба"),
                new LegendDto(false, "Ревенант"),
                new LegendDto(false, "Хорайзон"),
                new LegendDto(false, "Фьюз"),
                new LegendDto(false, "Рампарт"),
                new LegendDto(false, "Ваттсон"),
                new LegendDto(false, "Октейн")
 
            });
 
        private static readonly ReadOnlyCollection<LegendDto> startingLegends;
 
        static SelectLegendVM()
        {
            startingLegends = Array.AsReadOnly(allLegends.Where(lg => lg.IsStarting).ToArray());
        }
 
        private static readonly Random random = new Random();
        public static T GetRandom<T>(IList<T> list) => list[random.Next(list.Count)];
 
        private LegendDto _selectedLegend;
        public LegendDto SelectedLegend { get => _selectedLegend; set => Set(ref _selectedLegend, value); }
 
        private RelayCommand _randomLegendsCommand;
        public RelayCommand RandomLegendsCommand => _randomLegendsCommand
            ?? (_randomLegendsCommand = new RelayCommand(RandomLegendsMethod));
 
        private void RandomLegendsMethod() => SelectedLegend = GetRandom(allLegends);
 
        private RelayCommand _randomStartingLegendsCommand;
 
        public RelayCommand RandomStartingLegendsCommand => _randomStartingLegendsCommand
            ?? (_randomStartingLegendsCommand = new RelayCommand(RandomStartingLegendsMethod));
 
        private void RandomStartingLegendsMethod() => SelectedLegend = GetRandom(startingLegends);
    }
}
XML
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
<Window x:Class="Apex.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Apex"
        mc:Ignorable="d"
        Title="Character Selection" FontFamily="Source Sans Pro"
        MaxHeight="600" Height="400"
        MaxWidth="900" Width="600"
        DataContext="{DynamicResource viewModel}">
    <FrameworkElement.Resources>
        <local:SelectLegendVM x:Key="viewModel"/>
    </FrameworkElement.Resources>
    <Border CornerRadius="30" 
            BorderThickness="2"
            BorderBrush="LightGreen">
        <Grid Margin="10">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <TextBlock Text="Какие легенды у тебя есть?" 
                    HorizontalAlignment="Center" 
                       VerticalAlignment="Center"
                    FontSize="30" 
                    Margin="30"/>
            <Grid Grid.Row="1">
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition/>
                    <RowDefinition/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="3*"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Button Grid.Row="2" Margin="10"
                        Command="{Binding RandomLegendsCommand}">
                    <TextBlock Text="Все легенды"
                               TextWrapping="Wrap"
                               TextAlignment="Center"/>
                </Button>
                <Button Grid.Row="1" Grid.Column="2" Grid.RowSpan="2"
                        Margin="10"
                        >
                    <TextBlock Text="Выбрать из списка"
                               TextWrapping="Wrap"
                               TextAlignment="Center"/>
                </Button>
                <TextBlock Grid.Column="1"
                           Text="Значит ты будешь играть на персонаже: "
                           HorizontalAlignment="Center"
                           VerticalAlignment="Center"
                           FontSize="26"
                           FontStyle="Oblique"
                           TextWrapping="Wrap"/>
                <TextBlock Grid.Row="1" Grid.Column="1"
                           Margin="5" FontSize="30"
                           HorizontalAlignment="Center"
                           Text="{Binding SelectedLegend.Title}"/>
                <Button Grid.Row="1"
                        HorizontalAlignment="Left"
                        Command="{Binding RandomStartingLegendsCommand}"
                        Margin="10" Padding="5">
                    <TextBlock Text="Только Стартовые Легенды"
                               TextWrapping="Wrap"
                               TextAlignment="Center"/>
                </Button>
 
            </Grid>
        </Grid>
    </Border>
</Window>
Исходники: JeremyProg-Apex.7z
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
02.02.2021, 09:41
Теперь объясните что за раскрывающийся список вам надо получить? Откуда его надо брать?
По какому действию он должен быть показан? Наверное по кнопке "Выбрать из списка" ?
В каком месте (регионе) Окна его надо вывести?
0
0 / 0 / 0
Регистрация: 30.01.2021
Сообщений: 7
02.02.2021, 18:00  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Наверное по кнопке "Выбрать из списка" ?
В каком месте (регионе) Окна его надо вывести?
Вы поняли всё правильно.
Рядом с кнопкой, т.е. из правого края уже существующего окна.
Возвращаясь к ранее вами написанному, судя по тому, что вы не написали, вы предлагаете полностью перелопатить весь "скелет" WPF и код C# которые я имею на данный момент? Будет очень жаль, ведь всё работает.
К вопросу почему я не пишу это не на WinForms? Просто WPF + Material Design выглядят намного опрятнее нежели WinForms.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.02.2021, 18:25
Цитата Сообщение от JeremyProg Посмотреть сообщение
выглядят намного опрятнее нежели WinForms
Так и WPF немного другая технология, чем формы. Чего вы ожидали ?
Цитата Сообщение от JeremyProg Посмотреть сообщение
предлагаете полностью перелопатить весь "скелет" WPF и код C# которые я имею на данный момент? Будет очень жаль, ведь всё работает.
ну тогда и оставьте так, работает же )))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
02.02.2021, 20:50
Цитата Сообщение от JeremyProg Посмотреть сообщение
вы предлагаете полностью перелопатить весь "скелет" WPF и код C# которые я имею на данный момент? Будет очень жаль, ведь всё работает.
Жаль - не жаль, но придётся всё переделывать по нормальному.
Ваш код плох для Шарпа.
И его изменение, расширение сильно затрудненно.

Добавлено через 2 минуты
Цитата Сообщение от JeremyProg Посмотреть сообщение
Рядом с кнопкой, т.е. из правого края уже существующего окна.
Сделайте скрин Окна и фоторедактором добавьте где вы хотите видеть этот список.
И ЧТО должно быть в этом списке?
У вас есть все легенды, из них группа стартовых.
А в этом списке какие должны быть?
0
0 / 0 / 0
Регистрация: 30.01.2021
Сообщений: 7
03.02.2021, 19:24  [ТС]
Я бы предпочёл просто объяснение, как сделать выпадающее меню, с чекбоксами внутри.
И как их привязать к основному массиву?
Меню должно выпадать справа от кнопки "Выбрать из списка"

Добавлено через 5 минут
А ещё у меня напрочь отказывается понимать это: using Simplified;
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16118 / 11239 / 2887
Регистрация: 21.04.2018
Сообщений: 33,040
Записей в блоге: 2
03.02.2021, 20:23
Цитата Сообщение от JeremyProg Посмотреть сообщение
А ещё у меня напрочь отказывается понимать это: using Simplified;
Я же вам дал ссылку откуда брать дополнительные классы:
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Добавлено через 1 минуту
Цитата Сообщение от JeremyProg Посмотреть сообщение
Я бы предпочёл просто объяснение, как сделать выпадающее меню, с чекбоксами внутри.
Общего ответа дать невозможно - можно придумать десятки реализаций для различных задач.
Для конкретного ответа нужны детали конкретной задачи.

Добавлено через 1 минуту
Цитата Сообщение от JeremyProg Посмотреть сообщение
Меню должно выпадать справа от кнопки "Выбрать из списка"
Это понял.
А элементы списка откуда брать?
Это должны быть все легенды, стартовые легенды или ещё какой-иной список?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2021, 20:23
Помогаю со студенческими работами здесь

Как сделать,чтобы боковое меню отображалось на странице
Здравствуйте.Я совсем недавно начала писать сайты на Битриксе. Возникает много вопросов. Установила версию Start на денвер,установила...

Как сделать боковое меню для Windows phone?
Искал кучу информации по теме но ничего стоящего не нашел Все туториалы просто ужасны ...

sharepoint: Как правильно создавать горизонтальное выпадающее меню
Здравствуйте, у меня есть вопрос , как правильно создавать горизонтальное выпадающее меня, с использованием соственного html, css и...

Выпадающее меню без xml (как правильно применить Spinner)
Всем привет! Делаю выпадающее меню в приложении, в котором Активити базируется не на xml-файле. Сейчас у меня вот такой код: Spinner...

Как сделать выпадающее меню
Можно ли сделать выпадающее меню как на скрине без JS ? Здесь при выборе элемента, как в выпадающем меню он попадает наверх.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru