Şimdi Ara

Textbox (Windows Control) tasarımı - C#

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
591
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar,
    .Net kütüphanesi ile gelen textbox'ın çok dar kalıplara sahip olması nedeniyle ve aslında XNA kullanırken onları kullanmanın bir yolunu bulamamam nedeniyle kendi textboxımı tasarlamaya çalışmıştım. Bu tarz bir kontrol tasarlamaka için 3 adımı izlemiştim.
    -Kalıtım ilişkisi (Benim için bu ilişkiyi kurduğum sınıf Windows.Forms.Control değildi çünkü XNA'in oyun formunu, Windows.Forms'unkine uygun bir forma sokmayı bilmiyordum. Ve kendi XNAWindowsNesnesi sınıfımdan türeterek yapmıştım ama şimdi XNA için değil normal Windows formları için textbox tasarlamak istiyorum, dolayısıyla sanırım Windows'un Control sınıfından türetmem gerekecek.)
    -Input değerlendirmesi, asıl zorlandığım kısım buydu, ben textboxı basit bir oyun için tasarladığımdan tek yapmam gereken harfleri char olarak textboxt'ın text stringinin, selectedIndex yerine yerleştirmekti, ama profesyonel bir textbox için sadece harfler yok, klavyeden gelen bütün kombinasyonları değerlendirmek gerek. Burada iki sorum olacak; klavye, gönderdiği inputu yanlızca "basılan tuş" olarak mı gönderir? Yoksa örneğin capslock açıkken basılan bir harf için char olarak o harfin büyük versiyonunu mu gönderir? Öyle değilse, C# için klavyeden gönderilen şeyi tüm işlemlerden geçirip saf bir string olarak gönderen bir sınıf var mı?
    -Çizdirilebilirlik, Control nesneleri, üzerine override yapabileceğim bir Draw metodu içerir mi? (Windows form tarafından çağırılan bir metod)







  • Benim de merak ettiğim bir konu bilen biri açıklama yaparsa sevinirim.
  • quote:

    Orijinalden alıntı: Cigarette Smoking Man

    Benim de merak ettiğim bir konu bilen biri açıklama yaparsa sevinirim.

    Çizdirme kısmını hallettim, fakat sanıyorum klavye kombinasyonlarını kendim yazmam gerekecek.

     
    class mTextBox : Control
    {

    private bool frame = true;

    private Color frameColor = Color.Black;

    private bool backGround = true;

    private Color BackGroundColor = Color.White;

    private int selectIndex = 0;

    private int selectionLenght = 0;



    public mTextBox()
    : base()
    {
    this.Paint += new PaintEventHandler(mTextBox_Paint);
    this.KeyDown += new KeyEventHandler(mTextBox_KeyDown);
    }

    void mTextBox_KeyDown(object sender, KeyEventArgs e)
    {
    update();
    }

    void update()
    {
    Update();
    this.InvokePaint(this, new PaintEventArgs(this.CreateGraphics(), new Rectangle(0, 0, this.Size.Width, this.Size.Height)));
    }

    void mTextBox_Paint(object sender, PaintEventArgs e)
    {
    if (backGround)
    {
    e.Graphics.FillRectangle(new SolidBrush(BackGroundColor), new Rectangle(0, 0, this.Size.Width, this.Size.Height));
    }
    if (frame)
    {
    Pen p = new Pen(new SolidBrush(frameColor), 2f);
    e.Graphics.DrawRectangle(p, new Rectangle(0, 0, this.Size.Width, this.Size.Height));
    }
    e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), new PointF(5, 5));
    }



    }


    Kısaca çizdirme için Paint eventini kullanıyoruz.



    < Bu mesaj bu kişi tarafından değiştirildi welrocken -- 26 Aralık 2013; 11:35:25 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.