folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# - Label‘Daki Yazıyı Düzenlemek



C# - Label‘Daki Yazıyı Düzenlemek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    Hacılar yaptığım iş openFileDialog'dan bir dizindeki dosyayı seçince, seçilen dizinin label'da görünmesi. Bu kısımda sıkıntı yok. Fakat dizin çok uzun olduğu zaman label a sığmıyor örneğin;

     

    c:\program files\asdasdasd\bdbdbdbdbd\tbt.exe dizinine tıkladığımda label a sadece c:\program files\ kısmı sığıyor. Benim yapmak istediğim şey label a sığmayacak bir değer girildiğinde (bu kontrolü nasıl yapacağımı da bilmiyorum) label içine

    c:\...\tbt.exe şeklinde dizinin ilk ve son kısmını label a sığacak şekilde yazdırmak, mümkün müdür ?

     

    edit: şu şekilde birşey buldum ama nasıl kullanacağım hakkında bir fikrim yok.

     

    C#’ta aşağıdaki Windows API’sini kullanarak uzun dizin isimlerini arasına … gelecek şekilde kısaltabiliyorsunuz. [DllImport("shlwapi.dll", CharSet = CharSet.Auto)] static extern bool PathCompactPathEx([Out] StringBuilder pszOut, string szPath, int cchMax, int dwFlags); Böylece aşağıdaki gibi dizin isimleri elde edilebiliyor : C:\Documents and Settings\jatwood…\UnitTests.vb \\wumpus\public\Hilo Deliverab…\photo-small.jpg


    since 2005 // tbt
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kont239
    kont239's avatar
    Kayıt Tarihi: 04/Ocak/2010
    Erkek

    Hocam label in autoSize özelliği var senin yazına göre kendisi boyutlanıyor bir bak ona istersen 


    4641544948---53415249544153
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    Hocam AutoSize bir alt satıra geçiyor. Benim kullanabileceğim label tek satır ve boyu sınırlı 213; 20 boyutları dışına çıkmadan sığdırmam gerekiyor.


    since 2005 // tbt
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    saybirs
    saybirs's avatar
    Kayıt Tarihi: 24/Temmuz/2009
    Erkek

    hocam düz mantık olacak ama şöyle bişe yapsan

    mesela label1 karakter uzunluğu şu kadarsa width arttır 

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    Hocam zaten AutoSize özelliği tam olarak bu dediğini yapıyor. Ama dediğim gibi benim label boyum sınırlı ama içine dizin boyu ne olursa olsun sığdırmam gerekiyor bunun da tek yolu C:\...\test.exe haline bir şekilde getirebilmek diye düşünüyorum.


    since 2005 // tbt
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kont239
    kont239's avatar
    Kayıt Tarihi: 04/Ocak/2010
    Erkek

    şöyle yap o zmn hocam şu anda tuttuğun yolu bir stringe ata label a da text ine kendin yaz "C/ .../tbt.exe" diye 


    4641544948---53415249544153
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    hocam teşekkürler çözüm için ama daha global kullanabileceğim bir çözüm gerekiyor bana


    since 2005 // tbt
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    şöyle bir şey yapabilirsin.

     

    1. yol

    öncelikle label in belirttiğin ölçülerde kaç tane karakter aldığını bul atıyorum 108 tane. 8 tane karakteri çıkar ve onu 100 olarak varsay. çünkü gelen bilgide i karakteri de çok olabilir a karakteri de. Kapladığı hacimler farklı olacaktır..

     

    yapacağın işlem filename stringinden ilk 100-105 karakteri alıp incelemektir.. bu inceleme şöyle olacak

     

    c:\a....\ ...... \senindosyan.exe  öncelikle 100 ile senindosyan.exe karakterlerini (toplam karakter sayısı 16)  çıkart, 84 eder. gelen filne name atıyorum 200 karakter olsun.

    senin yapacağın iş. 0-84 karakter arasını almandır ve sonra slash karakterini arayacaksın. ilk olarak bu karakteri max 5 olmak üzere arttırıp slash bulmaya çalış

    84 karakter için c: ..... ...\den

    85 karakter için c: ..........\dene

    86 karakter için c:..........\denem

    87 karakter için c:..........\deneme

    88 karakter için c:..........\deneme\

     

    gördüğün gibi 88 . karakterde bulduk. 84 + 5 den küçük olduğu için bunu kullanabilirsin. diziden toplam 88 karakter alıp 

    "c:...........deneme\" .... " \senindosyan.exe"  gibi eklersin.

    farzedelelim o klasörün adı deneme değil de "deneme güzel şeydir" diye olsun o halde

     

     

    84 karakter için c: ..... ...\den

    85 karakter için c: ..........\dene

    86 karakter için c:..........\denem

    87 karakter için c:..........\deneme

    88 karakter için c:..........\deneme   (boşluk var)

    89 karakter için c:..........\deneme g

    90 karakter için c:..........\deneme gü

     

    gördüğün gibi hala slash ı bulamadı 84 +5  de. O halde umudu kesip bundan sonra 84. karakter itibaren ilk slashı alıyorsun..

    lastofindex var c# da. onunla tüm karakter - 84 yaparsın ondan sonra sana ilk slashın yerini söyler.. yukarıdaki işlemi de o şekilde yaptırabilirsin

     

    c:...... klasör\ şeklinde alırsın sonra c:\......\klasör + ...." \senindosyan.exe"

     

    2. split fonksiyonunu kullanarak "\" işaretiyle böldürüp hesini bir diziye at yani

    string a = "c:\program files\deneme1\deneme2 "

    string dizi[] = a.Split("\"); yaparsan. dizinin elemanları

    c:

    program files

    deneme1

    deneme2

    olur.

     

    bunların tek tek karakterlerini sırayla topla ve 84 olup olmadığına bak, tabii her bir dizi elemanı için de bir slash eklemeyi unutma

    c:\program files\ karakter sayısı ?  18 ... 84 oldu mu hayır? devam

    c:\program files\deneme1\  --> 26...  84 oldu mu? hayır. devam

    c:\program files\deneme1\deneme2\  -> 34 .... 84 oldu mu hayır. başka var mı yok? o halde bunu kabul et. 

     

    farzedelim

    c:\program ..................... \ deneme12 -> 92 ... 84 oldu mu? evet geçiyor .O halde deneme12 den öncekileri al (dizideki aktif index neyse onun bir eksiğini alabilirsin

    dizi[0] + dizi[1] ... .dizi[10] + "senindosya.exe"

     

    gibi bir şeyler yapabilirsin.. biraz uzun ve uğraştırıcı yöntem oldu ama vermiş olduğun api deki çalışma mantığı bu tarz bir şey

     

     


    Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SharpShooter
    SharpShooter's avatar
    Banlanmış Üye
    Kayıt Tarihi: 10/Temmuz/2008
    Erkek

    windows apilerini nasıl kullanacağını

    http://www.tahribat.com/Dokuman-Windows-Api-Kullanimi-C-Net-368/

    şu dökümanda öğrenebilirsin


    - xx yerde hata var. - ya aslında kod şöyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    Teşekkür ediyorum Hocam. o verdiğim WinApi'yi kullanmayı başaramazsam sanırım kullanmam gereken yöntem bu olacak. Ama bu WinApi yi çözebilirsem en verimisi o olacak sanıyorum


    since 2005 // tbt
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    manyaki
    manyaki's avatar
    Kayıt Tarihi: 27/Temmuz/2005
    Erkek

    SharpShooter bunu yazdı:
    -----------------------------

    windows apilerini nasıl kullanacağını

    http://www.tahribat.com/Dokuman-Windows-Api-Kullanimi-C-Net-368/

    şu dökümanda öğrenebilirsin


    -----------------------------

    Döküman sana aitmiş hocam eline sağlık, okuyorum.


    since 2005 // tbt
Toplam Hit: 2937 Toplam Mesaj: 13