Avatar billede dennism Nybegynder
16. september 2008 - 10:13 Der er 6 kommentarer og
1 løsning

C# WPF: Placering i canvas

Jeg laver en ellipse som jeg tilføjer til mit canvas:
Ellipse myEllipse = new Ellipse();
...
canvas.Children.Add(myEllipse);

Denne canvas er det eneste der ligger i mit vindues content.

Hvordan kan jeg bestemme denne ellipses placering i vinduet? Jeg har forsøgt mig med den property der hedder Margin hvor jeg sætter left og top - men det fungerer ikke rigtigt. Er der en anden property jeg skal bruge?
Avatar billede aaberg Nybegynder
16. september 2008 - 11:31 #1
Hvis du vil placere din ellipse på x=10;y=100:

Canvas.SetLeft(myEllipse, 10);
Canvas.SetTop(myEllipse, 100);
Avatar billede dennism Nybegynder
16. september 2008 - 17:00 #2
Det er ikke mit canvas jeg skal have placeret, men mine elementer i mit canvas. Jeg vil gerne have absolut positionering af mine grafiske elementer.
Avatar billede aaberg Nybegynder
16. september 2008 - 21:22 #3
Den kode jeg skrev i min første post, flytter ikke Canvasen, men derimod elementet "myEllipse"! Det er sådan det fungerer i WPF.

Canvas.SetLeft() og Canvas.SetTop() er statiske metoder.
Avatar billede dennism Nybegynder
16. september 2008 - 22:26 #4
Tak. Du må meget gerne smide et svar :)

Hvis det er nemt at svare på, vil jeg også gerne vide følgende:
1)
Er det ikke meningen at man kan ligge noget et tekst i en label? Jeg synes ikke at den har en text eller value property. Det er måske udelukkende textboxes man skal bruge til det?

2)
Jeg har en Slider i mit program. Da jeg gerne vil indskrive dens value i en textbox/label når den ændres, har jeg lavet dette:

mySlider.IsEnabledChanged += SliderHandler;

public void SliderHandler(object sender, EventArgs e) {
  numEllipsesText.Text = mySlider.Value.ToString();
}

Men jeg får en fejl, når jeg forsøger at tilføje denne handler. Hvad er det, jeg gør forkert?
Avatar billede aaberg Nybegynder
16. september 2008 - 23:04 #5
1)
Brug Content propertien.

2)
Jeg vil tro at det er ValueChanged eventet du skal have fat i. Nedenstående virker:

public partial class Window1 : Window
{
  public Window1()
  {
      InitializeComponent();

      this.slider1.ValueChanged +=new RoutedPropertyChangedEventHandler<double>(slider1_ValueChanged);
  }

  private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  {
      label1.Content = this.slider1.Value.ToString();
  }
}
Avatar billede dennism Nybegynder
16. september 2008 - 23:33 #6
Mange tak!

Hvordan kan jeg sikre mig, at min slider kun antager lige numre når jeg trækker den?
Avatar billede aaberg Nybegynder
17. september 2008 - 09:56 #7
Jeg er ikke sikker på om det er muligt med WPF slideren. Men jeg er ikke sikker. Men det er jo altid muligt at konvertere tallet til en integer.

  private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
  {
      label1.Content = Convert.ToInt32(this.slider1.Value).ToString();
  }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester