wiki:faq
Last modified 6 years ago Last modified on 2011-01-30 19:42:58

Graafisten käyttöliittymien ohjelmointi -kurssin FAQ

Tämä FAQ sisältää yleisimpiä kysymyksiä ja vastauksia pääasiassa Windows-ohjelmoinnista Visual Studiolla ja C#-kielellä. Maailmalla on jo olemassa valmiita FAQ-sivustoja ja niissä jo käsiteltyjä aiheita ei lisätä turhaan tälle sivulle. Tarkista siis aina ensimmäisenä seuraavat:

Miten saan visual studion designeriin oman luokan propertyyn esim. alasvetovalikon?

Joudut luomaan propertyä varten oman tyyppiconvertterin: How to: How to: Implement a Type Converter. Ts. Tyyppikonvertteriluokassa ylimääritellään tietyt metodit joita designer käyttää ja saa niiden perusteella listan propertyyn kelpaavista arvoista ja näyttää ne sitten automaattisesti alasvetovalikkona.

Aiheesta kertoo tarkemmin artikkeli Design Time Integration of Windows Forms Components. Sama artikkeli pätee myös WPF-komponentteihin.

Miten käytetään Visual Studion tarjoamia editoreita omien kontrollien propertyjen muokkaamiseen?

Yksinkertaisen vinkin aiheeseen antaa artikkeli: How do you make a user control property of type collection<string> editable/setable in visual studio designer Visual Studion tarjoamia editoreita on listattu sivulla Windows Forms Designer Editors WPF: Creating Custom Editors

Slider-kontrolli ei reagoi mousedown eventiin?

Joudut käyttämään PreviewMouseDown-tapahtumaa.

Miten saan WPF:ssä tehtyä oman komponentin perimällä suoraan valmiista komponentista esim. Button-luokasta?

  • Luo uusi WPF User Control library
  • Muuta luokalle haluamasi nimi ja peri haluamastasi luokasta esim: public partial class OmaButton? : Button
  • Korjaa konstruktori oikealle nimelle (OmaButton?)
  • Huomaa, että namespacella ei saa olla sama nimi kuin omalla luokalla
  • Muuta XAML-tiedostoon UserControl?-elementti Button-elementiksi tai mistä luokasta sitten peritkään
  • Muuta x:Class-määritykseen oman luokkasi nimi esim.: x:Class="OmaNimiavaruus.OmaButton

Miten avaan nettisivun käyttäjän oletusselaimeen?

using System.Diagnostics;

class LuokkasiNimi
{
    static void Main()
    {
        Process.Start("http://example.tld/");
    }
}