Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question<Window x:Class="TestJuniorDD.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" MouseLeftButtonUp="Window_MouseLeftButtonUp" MouseDoubleClick="Window_MouseDoubleClick" MouseMove="Window_MouseMove"> <Grid Name="grid"> <StackPanel Width="50" HorizontalAlignment="Left"> <Button Click="Button_Click"> <TextBox/> </Button> <Button Click="Button_Click"> <RadioButton/> </Button> <Button Content="Cable" Click="Button_Click"/> </StackPanel> </Grid> </Window>
Imports System.Text Imports System.Threading.Tasks Namespace TestJuniorDD ''' <summary> ''' Logique d'interaction pour MainWindow.xaml ''' </summary> Partial Public Class MainWindow Inherits Window Public Sub New() InitializeComponent() End Sub Private bouton As Button Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) bouton = TryCast(sender, Button) 'caste sender en bouton End Sub Private Sub Window_MouseLeftButtonUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs) If bouton Is Nothing Then Return End If If bouton.Content.ToString() = "Cable" Then DessinCable(e) Else DessinControl(e) End If End Sub #Region "Cable" Private cable As Path Private figure As PathFigure Private Sub DessinCable(ByVal e As MouseButtonEventArgs) If cable Is Nothing Then cable = New Path() 'on crée un nouveau path figure = New PathFigure() 'on crée une figure figure.StartPoint = e.GetPosition(grid) 'le point de départ Dim ligne As New LineSegment(e.GetPosition(grid), True) 'un segment temporaire figure.Segments = New PathSegmentCollection() 'on initialise la collection de segment figure.Segments.Add(ligne) 'on ajoute le segment temporaire cable.Stroke = New SolidColorBrush(Color.FromRgb(255, 0, 0)) 'on lui donne une couleur au câble cable.Data = New PathGeometry( { figure }) ' on met la figure dans le câble grid.Children.Add(cable) 'on ajoute le câble à la page Else figure.Segments.RemoveAt(figure.Segments.Count - 1) 'on enleve le dernier segment temporaire figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on met le vrai segment figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on remet le nouveau segment temporaire End If End Sub Private Sub Window_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) TraceSegment(e) 'il s'agit d'un segment temporaire End Sub Private Sub Window_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseButtonEventArgs) TraceSegment(e) 'il s'agit du dernier segment cable = Nothing 'on stope le dessin du cable figure = Nothing bouton = Nothing End Sub Private Sub TraceSegment(ByVal e As MouseEventArgs) If cable Is Nothing Then Return End If figure.Segments.RemoveAt(figure.Segments.Count - 1) 'on enleve le dernier segment temporaire figure.Segments.Add(New LineSegment(e.GetPosition(grid), True)) 'on remet le nouveau segment End Sub #End Region Private Sub DessinControl(ByVal e As MouseButtonEventArgs) Dim control As Control If TypeOf bouton.Content Is TextBox Then 'on initialise le bon contrôle control = New TextBox() Else control = New RadioButton() End If control.Width = 100'on lui mets une taille control.Height = 15 control.Margin = New Thickness(e.GetPosition(grid).X, e.GetPosition(grid).Y, 0, 0)'on le positionne sur la page control.HorizontalAlignment = HorizontalAlignment.Left 'on précise la référence de position control.VerticalAlignment = VerticalAlignment.Top grid.Children.Add(control) 'on l'ajoute bouton = Nothing 'on stoppe l'ajout d'un contrôle End Sub End Class End Namespace