Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
евг
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
1

Возможно ли создать внутри Button еще какой-нибудь объект ? Линию или Прямоугольник,например

01.06.2014, 18:34. Просмотров 456. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток!

Есть набор элементов - 1000 кнопок.Можно ли внутри них создать линии,например.

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
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
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace RandomButtons
{
    // Создаём класс - наследник Canvas
    public class MyButtonCanvas : Canvas
    {
        // Генератор псевдослучайных чисел
        Random rnd = new Random();
        // Ширина для кнопок
        const double ChildrenWidth = 40;
        // Высота для кнопок
        const double ChildrenHeight = 40;
        // Метод, который срабатывает при изменении размеров Canvas
        // и соответственно располагающий дочерние элементы на нём
 
 
 
 
        bool arranged = false;
        // Метод, который срабатывает при изменении размеров Canvas
        // и соответственно располагающий дочерние элементы на нём
        protected override Size ArrangeOverride(Size arrangeSize)
        {
            if (!arranged)
            {
                // проходим по всей коллекции кнопок
                foreach (UIElement child in Children)
                {
                    // Задаём отступ слева
                    // Отступ генерируется в значениях между 0 и шириной Canvas за вычетом ширины кнопки
                    SetLeft(child, (double)rnd.Next(0, (int)(arrangeSize.Width - ChildrenWidth)));
                    // Задаём отступ сверху
                    // Отступ генерируется в значениях между 0 и высотой Canvas за вычетом высоты кнопки
                    SetTop(child, (double)rnd.Next(0, (int)(arrangeSize.Height - ChildrenHeight)));
                }
                arranged = true;
            }
            // Поднимаем базовую реализацию (скрывать нет смысла)
            return base.ArrangeOverride(arrangeSize);
        }
 
        /* // проходим по всей коллекции кнопок
         foreach (UIElement child in Children)
         {
             // Задаём отступ слева
             // Отступ генерируется в значениях между 0 и шириной Canvas за вычетом ширины кнопки
             SetLeft(child, (double)rnd.Next(0, (int)(arrangeSize.Width - ChildrenWidth)));
             // Задаём отступ сверху
             // Отступ генерируется в значениях между 0 и высотой Canvas за вычетом высоты кнопки
             SetTop(child, (double)rnd.Next(0, (int)(arrangeSize.Height - ChildrenHeight )));
         }
         // Поднимаем базовую реализацию (скрывать нет смысла)
         return base.ArrangeOverride(arrangeSize);
     }
         */
        // Создание коллекции дочерних элементов
        protected override UIElementCollection CreateUIElementCollection(FrameworkElement logicalParent)
        {
            // Новая коллекция
            var collection = new UIElementCollection(this, this);
            // Генерируем кнопки
            // Содержание кнопки - текст от 000 до 0999
            // Ширина и высота кнопки - константы
            var buttons = Enumerable.Range(0, 1000).Select(s => new Button()
            {
                Content = s.ToString("0000"),
                Width = ChildrenWidth,
                Height = ChildrenHeight
            }).ToArray();
 
            // Добавляем кнопку в коллекцию
            foreach (var btn in buttons)
                collection.Add(btn);
            // возвращаем коллекцию
            return collection;
        }
 
 
 
 
 
    }
 
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 18:34
Ответы с готовыми решениями:

Возможно ли вычислить анонима через IP адрес или еще какими-нибудь способами
Подскажите, возможно ли вычислить анонима через IP адрес или еще какими-нибудь способами? Хочу...

На множестве файлов или файловой системы (например, своей флэшки) ввести какой-нибудь порядок
На множестве файлов или файловой системы (например, своей флэшки) ввести какой-нибудь порядок....

Как создать 2 Bands HasDetal или еще что-нибудь!!! и вопрос по SQL
Здрасте!!! 2 вопроса: 1) Как создать 2 Bands HasDetal??? Или как нибудь подругому решить...

Создать какой-нибудь класс. Например класс автомобиль, объявить в нем поля с различными режимами доступа
Создать какой-нибудь класс. Например класс автомобиль, объявить в нем поля с различными режимами...

Подскажите какие-нибудь книги по мат. моделированию. Или что-нибудь еще в этом роде.
Вот и закончился курс дифференциальных уравнений, экзамен сдан. Хотелось бы спросить вот что....

7
you_rule
56 / 56 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 19:13 2
Можно конечно, у кнопки есть свойство Content, туда пихаете StackPanel, а в нее уже все что угодно
пример кнопки с изображением:
C#
1
2
3
4
5
6
7
8
9
10
Image img = new Image();
  img.Source = new BitmapImage(new Uri("foo.png"));
 
  StackPanel stackPnl = new StackPanel();
  stackPnl.Orientation = Orientation.Horizontal;
  stackPnl.Margin = new Thickness(10);
  stackPnl.Children.Add(img);
 
  Button btn = new Button();
  btn.Content = stackPnl;
1
евг
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 19:29  [ТС] 3
you_rule, спасибо ! А вы не могли бы поподробнее объяснить на примере вот этого кусочка кода

C#
1
2
3
4
5
6
var buttons = Enumerable.Range(0, 1000).Select(s => new Button()
            {
                Content = s.ToString("0000"),
                Width = ChildrenWidth,
                Height = ChildrenHeight
            }).ToArray();
Добавлено через 14 минут
you_rule, я вроде прикрепил.Для тестирования взял Ваш вариант . Билдится успешно.Но при запуске выдает ошибку на строку :
C#
1
img.Source = new BitmapImage(new Uri("foo.png"));
0
Вуди
15 / 14 / 2
Регистрация: 18.07.2013
Сообщений: 41
01.06.2014, 19:38 4
Может картинки нет?)
0
01.06.2014, 19:38
you_rule
56 / 56 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 19:45 5
евг, ну вот как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            var buttons = Enumerable.Range(0, 1000).Select(s =>
            {
                StackPanel stk = new StackPanel();
                Image img = new Image();
                img.Source = new BitmapImage(new Uri("path.img"));
                // сюда добавляем что угодно, в данном случае изображение
                stk.Children.Add(img);
                var btn = new Button();
                Width = ChildrenWidth;
                Height = ChildrenHeight;
                btn.Content = stk;
                return btn;
            }).ToArray();
ну канешн на отсутствие картинки ругается)
1
евг
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 19:54  [ТС] 6
you_rule, Спасибо большое!

Добавлено через 8 минут
you_rule, извините за настырность,а картинку нужно куда положить ? и в строчке
C#
1
new Uri("foo.png")
нужно полный путь указывать ?

Вот такая ошибка

{"Недопустимый URI: Невозможно определить формат URI."}
0
you_rule
56 / 56 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 20:22 7
евг,
если путь относительный, то так
C#
1
img.Source = new BitmapImage(new Uri("path.img"),UriKind.Relative);
1
евг
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 20:22  [ТС] 8
you_rule, о! спасибо огромное!
0
01.06.2014, 20:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 20:22

А что находится внутри функции MessageBox или как еще можно создать MessageBox?
Помните сказку о лягушке-царевне? Что необходимо было сделать, чтобы убить Кащея-бессмертного? ―...

Как результат работы программы (например какой-нибудь текст) опубликовать на форуме
Можно ли сделать так чтобы результат работы программы (например какой не будь текст) публиковался...

Подскажите, как можно разместить кнопку Button на картинке или на Canvas или на каком нибудь другом объекте
Подскажите, как можно разместить кнопку Button на картинке или на Canvas или на каком нибудь другом...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.