Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2014, 00:29   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Изменение расположения кнопки

Всем привет.
Можете подсказать, как случайно изменить расположение кнопки в зависимости от размеров Grid
Код:
Random randm = new Random();
            var height = gridmain.ActualHeight; 
            var width = gridmain.ActualWidth;
            
            double drandmw = randm.NextDouble() * width;            
            double drandmh = randm.NextDouble() * height;
            double buttonw = ((Button)sender).ActualWidth;
            double buttonh = ((Button)sender).ActualHeight;
И нужно как-то вычислить Margin кнопки
REztor вне форума Ответить с цитированием
Старый 24.12.2014, 11:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вам Grid? Grid для ячеек, либо создайте несколько ячеек и их используйте, либо берите Canvas.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.12.2014, 23:56   #3
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Grid используется по умолчанию, поэтому его и использую.
Мне нужно найти две стороны Margin:
1) Left или Right;
2) Top или Bottom
REztor вне форума Ответить с цитированием
Старый 25.12.2014, 00:28   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И? "По умолчанию" не предполагается такой сценарий использования.
Если вы хотите задавать координаты элементов берите Canvas.

Впрочем и с Margin не пойму в чем у вас проблема. Берите и задавайте Top и Left, так же как и во всяких Дельфях и винформсах.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 25.12.2014 в 00:30.
Alex11223 вне форума Ответить с цитированием
Старый 25.12.2014, 02:08   #5
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Впрочем и с Margin не пойму в чем у вас проблема. Берите и задавайте Top и Left, так же как и во всяких Дельфях и винформсах.
Кнопка должна перемещаться случайно в любое место при наведении на нее, но не должна пропасть с панели
Код:
 var height = gridmain.ActualHeight; 
 var width = gridmain.ActualWidth;
Поэтому и получены текущие размеры окна
REztor вне форума Ответить с цитированием
Старый 25.12.2014, 10:54   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Как это относится к процитированному тексту?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.12.2014, 20:04   #7
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

А можете подсказать как сделать, чтобы при изменении разрешения экрана, кнопка осталась на месте?
Код:
            button2.Content = "Кнопка 2";
            button2.Width = 70;
            button2.Height = 40;
            button2.VerticalAlignment = VerticalAlignment.Stretch;
            button2.HorizontalAlignment = HorizontalAlignment.Stretch;
            button2.Margin = new Thickness(950, 130, 0, 0);
            button2.Name = "button2";
            grd_InfoGrid.Visibility = Visibility.Visible;
REztor вне форума Ответить с цитированием
Старый 28.12.2014, 21:12   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Экрана? Может, размер окна? Или оно фуллскрин?)

Никак наверно если Margin использовать.

Не делайте так. Почитайте какую-нибудь книгу о WPF, его системе layout'а и используйте все это правильно, а не так, как привыкли в винформс/дельфи. Оно ж не просто так придумано, это намного удобнее и проще.

А если уж так хочется задавать координаты, берите Canvas.

Код:
<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Canvas Name="canvas">
            <Button Content="Click me" Padding="10,5" Canvas.Top="100" Canvas.Left="50" Click="Button_Click" Name="button1"/>
        </Canvas>
    </Grid>
</Window>
Код:
using System;
using System.Windows;
using System.Windows.Controls;

namespace WpfApplication4
{
    public partial class MainWindow : Window
    {
        private static readonly Random Rand = new Random();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int left = Rand.Next(0, (int) (canvas.ActualWidth - button1.ActualWidth));
            int top = Rand.Next(0, (int) (canvas.ActualHeight - button1.ActualHeight));

            Canvas.SetLeft(button1, left);
            Canvas.SetTop(button1, top);

        }
    }
}
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.12.2014 в 21:14.
Alex11223 вне форума Ответить с цитированием
Старый 28.12.2014, 21:41   #9
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Экрана? Может, размер окна? Или оно фуллскрин?)
Нет, я имел ввиду, если расположить кнопку указав Margin на Grid, а потом свернуть или развернуть окно, чтобы она оставалась на месте
REztor вне форума Ответить с цитированием
Старый 28.12.2014, 21:58   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

При сворачивании оно и не должно меняться. Если размер окна не меняете.

В любом случае использовать Margin, чтоб задавать месторасположение элемента как координатами — неправильно.
Grid это таблица из строк и столбцов, а не Canvas.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 29.12.2014 в 00:34.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение кнопки REztor WPF, UWP, WinRT, XAML 4 14.10.2014 16:24
Изменение рисунка кнопки BitBtn bilibian Общие вопросы Delphi 3 04.09.2014 22:56
Изменение рисунка кнопки BitBtn bang Общие вопросы Delphi 10 07.05.2013 15:06
Изменение кнопки Painkiller_13 Общие вопросы Delphi 4 11.03.2012 16:49
Изменение назначения кнопки (Delphi) CAMOBAP Помощь студентам 6 11.12.2010 21:48