• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# Tworzenie nowej sceny

Object Storage Arubacloud
0 głosów
149 wizyt
pytanie zadane 18 lutego 2017 w C# przez Yoshua Nowicjusz (200 p.)
Witam, dopiero uczę się programowania w C# i jestem w kropce, mianowicie chcę napisać kod aby poprzez kliknięcie na dany rectangle otworzyła się nowa scena ( coś jakby menu ) lecz nie mam najmniejszego pojęcia jak to zrobić, czytałem trochę o funkcji enum ale nie zbyt wiele mi to dało, mógłby ktoś z was mi lekko podpowiedzieć jak można coś takiego stworzyć ?

1 odpowiedź

0 głosów
odpowiedź 19 lutego 2017 przez Bartłomiej Łaski Mądrala (5,100 p.)
Technolgia WPF czy Form?

Pozdrawiam :)
komentarz 19 lutego 2017 przez Bartłomiej Łaski Mądrala (5,100 p.)

Jeżeli chodzi o WPF to pokaże Ci najprostrzy sposob, ale tak jak jest to tu pokazane, nikt raczej ni uzywa, poniewaz robi sie to poprzed userControle i MVVM. Niżej napisze jak to zrobic przez userControle i jak eventy wywolac.

 

PLIK XAML

<Window x:Class="WpfApplication1.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:WpfApplication1"
        mc:Ignorable="d"
        Title="Tutorial" Height="350" Width="525">
    <Grid>
        <Grid>
            <Rectangle x:Name="Retangle" Width="150" Height="150" Fill="Red" MouseDown="Retangle_MouseDown" Visibility="Visible"/>
        </Grid>

        <Grid x:Name="pnl" Visibility="Collapsed">
            <StackPanel>
                <Button Height="100" Width="200">
                    Button1
                </Button>
                <Button Height="100" Width="200">
                    Button2
                </Button>
                <Button Height="100" Width="200" Click="Button_Click">
                    Exit
                </Button>
            </StackPanel>
        </Grid>
    </Grid>
</Window>

PLIK XAML.CS

using System.Windows;
using System.Windows.Input;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Retangle.AddHandler(FrameworkElement.MouseDownEvent, new MouseButtonEventHandler(Retangle_MouseDown), true);
        }

        private void Retangle_MouseDown(object sender, MouseButtonEventArgs e)
        {
            openMenu();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            closeMenu();
        }

        private void openMenu()
        {
            pnl.Visibility = Visibility.Visible;
            Retangle.Visibility = Visibility.Collapsed;
        }

        private void closeMenu()
        {
            pnl.Visibility = Visibility.Collapsed;
            Retangle.Visibility = Visibility.Visible;
        }
    }
}

 

komentarz 19 lutego 2017 przez Bartłomiej Łaski Mądrala (5,100 p.)

Tutaj masz rozwiazanie z usercontrolami i eventami :). Masz mniej wiecej pokazane jak działaja enumy w takich przypadkach :)

 

MainWindow XAML
 

<Window x:Class="WpfApplication1.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:WpfApplication1"
        mc:Ignorable="d"
        Title="Tutorial" Height="350" Width="525">
    <Grid>
        <Grid x:Name="pnlRetanle" Visibility="Visible">
            <local:retangle MenuButtonClick="retangle_MenuButtonClick"/>
        </Grid>
        <Grid x:Name="pnlMenu" Visibility="Collapsed">
            <local:menu MenuButtonClick="menu_MenuButtonClick"/>
        </Grid>
    </Grid>
</Window>


MainWindow.XAML.CS

using System.Windows;
using System.Windows.Input;

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Retangle_MouseDown(object sender, MouseButtonEventArgs e)
        {
            openMenu();
        }

        private void openMenu()
        {
            pnlRetanle.Visibility = Visibility.Collapsed;
            pnlMenu.Visibility = Visibility.Visible;
        }

        private void closeMenu()
        {
            pnlRetanle.Visibility = Visibility.Visible;
            pnlMenu.Visibility = Visibility.Collapsed;
        }

        private void retangle_MenuButtonClick(object sender, System.EventArgs e)
        {
            openMenu();
        }

        private void menu_MenuButtonClick(object sender, menu.Buttons e)
        {
            if(e == menu.Buttons.exit)
                closeMenu();
        }
    }
}


Retagnle XAML

<UserControl x:Class="WpfApplication1.retangle"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfApplication1"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Rectangle x:Name="Retangle" Width="150" Height="150" Fill="Red" MouseDown="Retangle_MouseDown" Visibility="Visible"/>
    </Grid>
</UserControl>


Retangle XAML CS
 

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 WpfApplication1
{
    /// <summary>
    /// Interaction logic for retangle.xaml
    /// </summary>
    public partial class retangle : UserControl
    {
        public delegate void MenuButtonClickEventHandler(object sender, EventArgs e);
        public event MenuButtonClickEventHandler MenuButtonClick;


        public retangle()
        {
            InitializeComponent();
        }

        private void Retangle_MouseDown(object sender, MouseButtonEventArgs e)
        {
            MenuButtonClick?.Invoke(this, new EventArgs());
        }
    }
}


MENU XAML
 

<UserControl x:Class="WpfApplication1.menu"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WpfApplication1"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <StackPanel>
            <Button Height="100" Width="200">
                Button1
            </Button>
            <Button Height="100" Width="200">
                Button2
            </Button>
            <Button Height="100" Width="200" Click="Button_Click">
                Exit
            </Button>
        </StackPanel>
    </Grid>
</UserControl>

MENU XAML CS
 

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 WpfApplication1
{
    /// <summary>
    /// Interaction logic for menu.xaml
    /// </summary>
    public partial class menu : UserControl
    {
        public delegate void MenuButtonClickEventHandler(object sender, Buttons e);
        public event MenuButtonClickEventHandler MenuButtonClick;

        public enum Buttons
        {
            button1,
            button2,
            exit
        }
        public menu()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MenuButtonClick?.Invoke(this, Buttons.exit);
        }
    }
}

 

Podobne pytania

0 głosów
2 odpowiedzi 456 wizyt
0 głosów
2 odpowiedzi 233 wizyt
pytanie zadane 21 czerwca 2017 w C# przez Yoshua Nowicjusz (200 p.)
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 14 kwietnia 2018 w C# przez Destroy3243 Nowicjusz (150 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...