Aracılığıyla paylaş


Visual Studio İçin Uygulama Desenleri

Pencere etkileşimleri

Visual Studio'da kullanılan iki ana pencere türü belge düzenleyicileri ve araç pencereleridir. Nadir, ancak mümkündür, büyük modsuz iletişim kutularıdır. Bunların tümü kabukta modeless olsa da, desenleri temelde farklıdır. Bu bölüm belge pencereleri, araç pencereleri ve modsuz iletişim kutuları arasındaki farkı kapsar. Kalıcı iletişim kutusu desenleri İletişim Kutuları'nda ele alınmıştır.

Pencere kullanım desenlerini karşılaştırma

Belge pencereleri neredeyse her zaman belge kutusu içinde görüntülenir. Bu, belge düzenleyicisine ek araç pencerelerini düzenlemek için bir "orta aşama" sağlar.

Araç penceresi genellikle IDE'nin kenarına daraltılmış ayrı, daha küçük bir pencere olarak görüntülenir. Bu görünür, gizli veya otomatik olarak gizlenebilir. Ancak bazen araç pencereleri, penceredeki Window/Docking özelliğinin işareti kaldırılarak belgenin içinde sunulur. Bu, daha fazla gayrimenkule, ancak aynı zamanda yaygın bir tasarım kararına neden olur: Visual Studio ile tümleştirmeye çalışırken, özelliğinizin bir araç penceresi mi yoksa belge penceresi mi görüntüleyeceğine karar vermeniz gerekir.

Visual Studio'da modsuz iletişim kutuları önerilmez. Çoğu modsuz iletişim kutusu, tanımı gereği kayan araç pencereleridir ve bu şekilde uygulanmalıdır. Kabuğun yanına yerleştirilmiş normal bir araç penceresinin boyutunun çok sınırlayıcı olacağı durumlarda, modsuz iletişim kutularına izin verilir. Ayrıca, kullanıcının iletişim kutusunu ikincil bir monitöre taşıma olasılığı yüksek olduğu durumlarda da bunlara izin verilir.

Hangi kapsayıcı türüne ihtiyacınız olduğunu dikkatlice düşünün. Kullanıcı arabirimi tasarımıyla ilgili yaygın kullanım deseni konuları aşağıdaki tabloda yer alır.

Belge penceresi Araç penceresi Modeless dialog
Bölme Her zaman belgenin içinde yer alır ve IDE'nin kenarlarına yerleştirmez. Ana kabuktan ayrı olarak kayan şekilde "çekilebilir". Genellikle IDE'nin kenarlarına sekmeyle yerleştirilmiştir, ancak kayan, otomatik olarak gizlenecek (sabitlenmemiş) veya belge kutusuna yerleştirilecek şekilde özelleştirilebilir. IDE'den ayrı büyük kayan pencere.
İşleme modeli Gecikmeli işleme

Verileri bir belgeye kaydetmek için kullanıcının Dosya Kaydet, Farklı Kaydet veya Tümünü Kaydet komutunu vermesi gerekir. > Belge penceresinde içindeki verilerin "kirli" olduğu ve ardından kaydetme komutlarından birine işlendiği kavramı vardır. Belge penceresi kapatılırken, tüm içerik diske kaydedilir veya kaybolur.
Anında işleme

Kaydetme modeli yoktur. Dosyayı düzenlemeye yardımcı olan denetçi araç pencereleri için, dosyanın etkin düzenleyicide veya tasarımcıda açık olması ve kaydetmenin sahibi düzenleyici veya tasarımcı olmalıdır.
Gecikmeli veya anında işleme

Çoğu zaman, büyük bir modsuz iletişim kutusu değişiklikleri işlemek için bir eylem gerektirir ve iletişim kutusu oturumunda yapılan değişiklikleri geri alan bir "İptal" işlemine izin verir. Bu, modsuz bir iletişim kutusunu bu araç pencerelerindeki bir araç penceresinden ayırt eder ve her zaman anında işleme modeline sahiptir.
Görünürlük Aç/Oluştur (dosya) ve Kapat

Belge pencerelerini açmak, var olan bir belgeyi açmak veya yeni belge oluşturmak için şablon kullanmak yoluyla yapılır. "Belirli bir düzenleyiciyi> aç<" komutu yoktur.
Gizleme ve gösterme

Tek örnekli araç pencereleri gizlenebilir veya gösterilebilir. Araç penceresindeki içerik ve durumlar, görünümde veya gizli durumda kalır. Çok örnekli araç pencereleri hem kapatılabilir hem de gizlenebilir. Çok örnekli bir araç penceresi kapatıldığında, araç penceresindeki içerik ve durum atılır.
Bir komuttan başlatıldı

İletişim kutuları, görev tabanlı bir komuttan başlatılır.
Örnekler Multi

Birkaç düzenleyici aynı anda açılabilir ve farklı dosyaları düzenleyebilirken, bazı düzenleyiciler aynı dosyanın birden fazla düzenleyicide açılmasına da izin verir (Yeni Pencere Penceresi > komutu kullanılarak).

Tek bir düzenleyici aynı anda bir veya birden çok dosyayı düzenliyor olabilir (Project Tasarım Aracı).
Tek veya çok örnekli

İçerikler bağlamı yansıtacak şekilde (Özellik Tarayıcısı'nda olduğu gibi) veya odağı/bağlamı diğer pencerelere (Görev Listesi, Çözüm Gezgini) göndererek değişir.

Gerek tek örnekli gerekse çok örnekli araç pencereleri, ilgi çekici bir neden olmadığı sürece etkin belge penceresiyle ilişkilendirilmelidir.
Tek örnekli
Örnekler Kod düzenleyicisi gibi metin düzenleyicileri

Form tasarımcısı veya modelleme yüzeyi gibi tasarım yüzeyleri

Bildirim Tasarım Aracı gibi iletişim kutularına benzer denetim düzenleri
Çözüm Gezgini, çözümün içinde yer alan bir çözüm ve projeler sağlar

Sunucu Gezgini, kullanıcının pencerede açmayı seçtiği sunucuların ve veri bağlantılarının hiyerarşik bir görünümünü sağlar. Veritabanı hiyerarşisinden sorgu gibi bir nesne açıldığında bir belge penceresi açılır ve kullanıcının sorguyu düzenlemesine olanak tanır.

Özellik Tarayıcısı, seçilen nesnenin özelliklerini belge penceresinde veya başka bir araç penceresinde görüntüler. Özellikler hiyerarşik kılavuz görünümünde veya karmaşık iletişim kutusu benzeri denetimlerde sunulur ve kullanıcının bu özellikler için değerleri ayarlamasına izin verir.

Araç pencereleri

Araç pencereleri, belge pencerelerinde gerçekleşen kullanıcının çalışmasını destekler. Visual Studio'da sunulan ve işleyebilen temel bir kök nesneyi temsil eden bir hiyerarşi görüntülemek için kullanılabilirler.

IDE'de yeni bir araç penceresi göz önünde bulundurulduğunda yazarlar şunları yapmalıdır:

  • Göreve uygun mevcut araç pencerelerini kullanın ve benzer işlevlere sahip yenilerini oluşturmayın. Yeni araç pencereleri yalnızca benzer bir pencereyle tümleştirilmeyecek önemli ölçüde farklı bir "araç" veya işlev sunuyorsa ya da var olan bir pencereyi bir özet hub'a dönüştürerek oluşturulmalıdır.

  • Gerekirse araç penceresinin üst kısmında standart bir komut çubuğu kullanın.

  • Denetim sunusu ve klavye gezintisi için diğer araç pencerelerinde bulunan desenlerle tutarlı olun.

  • Diğer araç pencerelerindeki denetim sunusuyla tutarlı olun.

  • Mümkün olduğunda belgeye özgü araç pencerelerinin otomatik olarak görünür olmasını, böylece yalnızca üst belge etkinleştirildiğinde görünmesini sağlayın.

  • Pencere içeriğinin klavyeyle gezinilebilir olduğundan emin olun (destek ok tuşları).

Araç penceresi durumları

Visual Studio araç pencereleri, bazıları kullanıcı tarafından etkinleştirilen (otomatik gizleme özelliği gibi) farklı durumlara sahiptir. Otomatik görünür gibi diğer durumlar, araç pencerelerinin doğru bağlamda görünmesine ve gerekli olmadığında gizlenmelerine izin verir. Toplamda beş araç penceresi durumu vardır.

  • Yerleşik/sabitlenmiş araç pencereleri, belge alanının dört tarafından herhangi birine eklenebilir. Araç penceresi başlık çubuğunda rapt simgesi görünür. Araç penceresi, kabuğun ve diğer araç pencerelerinin kenarı boyunca yatay veya dikey olarak sabitlenebilir ve sekmeyle bağlanabilir.

  • Otomatik gizli araç pencereleri sabitlenmemiş. Pencere, belge alanının kenarında bir sekme bırakarak (araç penceresinin adı ve simgesiyle) gözden kayabilir. Kullanıcı sekmenin üzerine geldiğinde araç penceresi dışarı kayar.

  • Düzenleyici gibi başka bir kullanıcı arabirimi parçası başlatıldığında veya odak kazanıldığında otomatik olarak görünür araç pencereleri otomatik olarak görünür.

  • Kayan araç pencereleri IDE'nin dışına gelin. Bu, çok monitörlü yapılandırmalar için kullanışlıdır.

  • Sekmeli belge aracı pencereleri belge kutusuna yerleştirilebilir. Bu, Object Browser gibi çerçevenin kenarlarına yerleştirmeye izin verdiğinden daha fazla emlak gerektiren büyük araç pencereleri için kullanışlıdır.

Tool window states in Visual Studio
Visual Studio'da araç penceresi durumları

Tek örnekli ve çok örnekli

Araç pencereleri tek örnekli veya çok örnekli pencerelerdir. Bazı tek örnekli araç pencereleri etkin belge penceresiyle ilişkilendirilebilirken, çok örnekli araç pencereleri ilişkilendirilmeyebilir. Çok örnekli araç pencereleri, pencerenin yeni bir örneğini oluşturarak Yeni Pencere Penceresi > komutuna yanıt verir. Aşağıdaki resimde, pencerenin bir örneği etkin olduğunda Yeni Pencere komutunu etkinleştiren bir araç penceresi gösterilmektedir:

Tool window enabling 'New Window' command when an instance of the window is active
Bir pencere örneği etkinken 'Yeni Pencere' komutunu etkinleştiren araç penceresi

Tek örnekli araç pencereleri gizlenebilir veya gösterilebilirken, çok örnekli araç pencereleri de kapatılabilir ve gizlenebilir. Tüm araç pencereleri yerleşik, sekme bağlantılı, kayan veya Birden Çok BelgeLi Arabirim (MDI) alt penceresi (belge penceresine benzer) olarak ayarlanabilir. Tüm araç pencereleri, Pencere menüsünde uygun pencere yönetimi komutlarına yanıt vermelidir:

Window management commands in the Visual Studio Window menu
Visual Studio Penceresi menüsündeki pencere yönetimi komutları

Belgeye özgü araç pencereleri

Bazı araç pencereleri, belirli bir belge türüne göre değişecek şekilde tasarlanmıştır. Bu pencereler, IDE'deki etkin belge penceresine uygulanabilir işlevselliği yansıtacak şekilde sürekli olarak güncelleştirilir.

İçeriği seçilen düzenleyiciyi yansıtacak şekilde değişen araç pencerelerine örnek olarak Araç Kutusu ve Belge Ana Hattı verilebilir. Bu pencereler, pencereye bağlam sunmayan bir düzenleyicinin odağı olduğunda filigran gösterir.

Bazı araç pencereleri, kullanıcının etkileşim kurabileceği gezinilebilir öğelerin listesini görüntüler. Bu pencere türünde, pencere etkin olmasa bile listedeki geçerli öğe için her zaman geri bildirim olmalıdır. Liste, pencerede seçili durumdaki öğeyi de değiştirerek GoToNextLocation ve GoToPrevLocation komutlarına yanıt vermelidir

Gezinilebilir liste aracı pencerelerine örnek olarak Çözüm Gezgini ve Sonuçları Bul penceresi verilebilir.

Araç penceresi türleri

Ortak araç pencereleri ve işlevleri

Hiyerarşik araç pencereleri

Araç penceresi İşlev
Çözüm Gezgini Projelerde, çeşitli dosyalarda ve çözüm öğelerinde bulunan belgelerin listesini görüntüleyen hiyerarşik bir ağaç. Projelerin içindeki öğelerin görüntülenmesi, proje türünün sahibi olan paket tarafından tanımlanır (örneğin, başvuru tabanlı, dizin tabanlı veya karma mod türleri).
Sınıf Görünümü Dosyaların kendilerinden bağımsız olarak, çalışma belge kümesindeki sınıfların ve çeşitli öğelerin hiyerarşik ağacı.
Sunucu Gezgini Çözümdeki tüm sunucuları ve veri bağlantılarını görüntüleyen hiyerarşik bir ağaç.
Belge Anahattı Etkin belgenin hiyerarşik yapısı.

Kılavuz aracı pencereleri

Araç penceresi İşlev
Özellikler Seçili nesnenin özelliklerinin listesini ve bu özellikleri düzenlemek için değer seçicileri görüntüleyen kılavuz.
Görev Listesi Kullanıcının görevleri ve açıklamaları oluşturmasına/düzenlemesine/silmesine olanak tanıyan bir kılavuz.

İçerik aracı pencereleri

Araç penceresi İşlev
Yardım Kullanıcıların "Nasıl Yapabilirim?" videolarından MSDN forumlarına kadar çeşitli yardım alma yöntemlerine erişmesini sağlayan bir pencere.
Dinamik Yardım Geçerli seçim için geçerli yardım konularının bağlantılarını görüntüleyen bir araç penceresi.
Nesne Tarayıcısı Sol bölmede hiyerarşik nesne bileşenlerinin listesini ve sağ sütunda nesnenin özelliklerini ve yöntemlerini içeren iki sütunlu bir çerçeve kümesi.

İletişim aracı pencereleri

Araç penceresi İşlev
Bul Kullanıcının çözüm içindeki çeşitli dosyaları bulmasına veya bulmasına ve değiştirmesine olanak tanıyan bir iletişim kutusu.
Gelişmiş Bul Kullanıcının çözüm içindeki çeşitli dosyaları bulmasına veya bulmasına ve değiştirmesine olanak tanıyan bir iletişim kutusu.

Diğer araç pencereleri

Araç penceresi İşlev
Araç kutusu Tasarım yüzeylerine bırakılacak öğeleri depolamak için kullanılan araç penceresi, tüm tasarımcılar için tutarlı bir sürükleme kaynağı sağlar.

Hata ayıklayıcısı araç pencereleri

Araç penceresi İşlev
İfade ve Değişkenler
Anlık
Çıktı Çıkış penceresi, bildirilecek metinsel olaylar veya durumunuz olduğunda kullanılabilir.
Bellek
Kesme noktaları
Çalışıyor
Belgeler
Çağrı Yığını
Yerel Öğeler
Saatler
Demontaj
Kayıtlar
İş Parçacıkları

Belge düzenleyicisi kuralları

Belge etkileşimleri

"Belge kutusu", IDE içindeki en büyük alandır ve kullanıcının ek araç pencerelerinin yardımıyla görevlerini tamamlamak için genel olarak dikkatini odakladığı yerdir. Belge düzenleyicileri, kullanıcının Visual Studio'da açtığı ve kaydettiği temel iş birimlerini temsil eder. Çözüm Gezgini veya diğer etkin hiyerarşi pencerelerine bağlı güçlü bir seçim duygusunu korurlar. Kullanıcı, bu hiyerarşi pencerelerinden birine işaret edebilmeli ve belgenin nerede yer aldığı ve çözüm, proje veya Visual Studio paketi tarafından sağlanan başka bir kök nesneyle ilişkisini bilmelidir.

Belge düzenleme tutarlı bir kullanıcı deneyimi gerektirir. Kullanıcının pencere yönetimi ve komutları bulmak yerine eldeki göreve odaklanmasına izin vermek için, bu belge türünü düzenlemek için kullanıcı görevlerine en uygun belge görünümü stratejisini seçin.

Belge kuyusunun ortak etkileşimleri

  • Ortak Yeni Dosya ve Dosya Aç deneyimlerinde tutarlı bir etkileşim modeli sağlayın.

  • Belge penceresi açıldığında ilgili pencerelerde ve menülerde ilgili işlevleri güncelleştirin.

  • Menü komutları Düzenleme, Biçim ve Görünüm menüleri gibi yaygın menülerle uygun şekilde tümleştirilir. Önemli miktarda özel komut varsa yeni bir menü oluşturulabilir. Bu yeni menü yalnızca belgede odak olduğunda görünür olmalıdır.

  • Ekli araç çubuğu düzenleyicinin en üstüne yerleştirilebilir. Bu, düzenleyicinin dışında görünen ayrı bir araç çubuğuna sahip olmak için tercih edilir.

  • Her zaman Çözüm Gezgini veya benzer etkin hiyerarşi penceresinde bir seçim yapın.

  • Çözüm Gezgini bir belgeye çift tıklanması, Aç ile aynı eylemi gerçekleştirmelidir.

  • Belge türünde birden fazla düzenleyici kullanılabiliyorsa, kullanıcı dosyaya sağ tıklayıp kısayol menüsünden Birlikte Aç'ı seçerek Belirli bir belge türündeki varsayılan eylemi geçersiz kılabilir veya sıfırlayabilir.

  • Belge kutusunda sihirbaz oluşturmayın.

Belirli belge türleri için kullanıcı beklentileri

Birkaç farklı temel belge düzenleyicisi türü vardır ve her birinin aynı türdeki diğer kişilerle tutarlı bir etkileşim kümesi vardır.

  • Metin tabanlı düzenleyici: kod düzenleyicisi, günlük dosyaları

  • Tasarım yüzeyi: WPF form tasarımcısı, Windows formları

  • İletişim kutusu stili düzenleyici: Bildirim Tasarım Aracı, proje özellikleri

  • Model tasarımcısı: iş akışı tasarımcısı, kod haritası, mimari diyagramı, ilerleme

Ayrıca, belgeyi iyi kullanan birkaç düzenleyici olmayan tür de vardır. Belgeleri kendileri düzenlemese de, belge pencereleri için standart etkileşimleri izlemeleri gerekir.

  • Raporlar: IntelliTrace raporu, Hyper-V raporu, profil oluşturucu raporu

  • Pano: Tanılama Merkezi

Metin tabanlı düzenleyiciler

  • Belge, önizleme sekmesi modeline katılarak belgeyi açmadan önizlemeye olanak sağlar.

  • Belgenin yapısı, belge ana hattı gibi bir yardımcı araç penceresinde gösterilebilir.

  • IntelliSense (uygunsa) diğer kod düzenleyicilerle tutarlı bir şekilde davranır.

  • Açılır pencereler veya yardımcı kullanıcı arabirimi, CodeLens gibi mevcut benzer kullanıcı arabirimi için benzer stilleri ve desenleri izler.

  • Belge durumuyla ilgili iletiler, belgenin en üstündeki bilgi çubuğu denetiminde veya durum çubuğunda gösterilir.

  • Kullanıcı, paylaşılan Yazı Tipleri ve Renkler sayfası veya düzenleyiciye özgü bir araç > seçenekleri sayfası kullanarak yazı tiplerinin ve renklerin görünümünü özelleştirebilmelidir.

Tasarım yüzeyleri

  • Boş bir tasarımcının yüzeyinde nasıl başlatıldığını gösteren bir filigran olmalıdır.

  • Görünüm değiştirme mekanizmaları, bir kod düzenleyicisi açmak için çift tıklama gibi mevcut desenleri veya belge penceresindeki sekmeleri izleyerek her iki bölmeyle de etkileşime olanak sağlar.

  • Tasarım yüzeyine öğe ekleme işlemi, son derece özel bir araç penceresi gerekmediği sürece Araç Kutusu aracılığıyla yapılmalıdır.

  • Yüzeydeki öğeler tutarlı bir seçim modelini izler.

  • Katıştırılmış araç çubukları yalnızca belgeye özgü komutlar içerir, Kaydet gibi yaygın komutlar içermez.

İletişim kutusu stili düzenleyiciler

  • Denetim düzeni normal iletişim kutusu düzeni kurallarına uygun olmalıdır.

  • Düzenleyicideki sekmeler belge sekmelerinin görünümüyle eşleşmemeli, izin verilen iki iç sekme stilinden biriyle eşleşmelidir.

  • Kullanıcıların yalnızca klavye kullanarak denetimlerle etkileşim kurabilmesi gerekir; ya düzenleyiciyi etkinleştirerek ve denetimler aracılığıyla sekme yaparak ya da standart anımsatıcıları kullanarak.

  • Tasarımcı ortak Save modelini kullanmalıdır. Başka düğmeler uygun olsa da, yüzeye genel kaydet veya işleme düğmeleri yerleştirilmemelidir.

Model tasarımcıları

  • Boş bir tasarımcının yüzeyinde nasıl başlatıldığını gösteren bir filigran olmalıdır.

  • Tasarım yüzeyine öğe ekleme işlemi Araç Kutusu aracılığıyla yapılmalıdır.

  • Yüzeydeki öğeler tutarlı bir seçim modelini izler.

  • Katıştırılmış araç çubukları yalnızca belgeye özgü komutlar içerir, Kaydet gibi yaygın komutlar içermez.

  • Gösterge, gösterge veya filigran olarak yüzeyde görünebilir.

  • Kullanıcı, paylaşılan Yazı Tipleri ve Renkler sayfası veya düzenleyiciye özgü bir Araç > Seçenekleri sayfası kullanarak yazı tiplerinin/renklerin görünümünü özelleştirebilmelidir.

Raporlar

  • Raporlar genellikle yalnızca bilgidir ve Kaydet modeline katılmaz. Ancak, diğer ilgili bilgilere bağlantılar veya genişletip daraltan bölümler gibi etkileşimler içerebilir.

  • Yüzeydeki komutların çoğu düğme değil köprü olmalıdır.

  • Düzen bir üst bilgi içermeli ve standart rapor düzeni yönergelerini izlemelidir.

Panolar

  • Panoların kendileri bir etkileşim modeline sahip değildir, ancak çeşitli başka araçlar sunmak için bir araç görevi görür.

  • Kaydet modeline katılmaz.

  • Kullanıcılar, düzenleyiciyi etkinleştirerek ve denetimler aracılığıyla sekme yaparak veya standart anımsatıcılar kullanarak yalnızca klavye kullanarak denetimlerle etkileşim kurabilmelidir.

İletişim Kutuları

Giriş

Visual Studio'daki iletişim kutuları genellikle kullanıcının çalışmasının tek bir birimini desteklemeli ve ardından kapatılmalıdır.

bir iletişim kutusuna ihtiyacınız olduğunu belirlediyseniz, tercih sırasına göre üç seçeneğiniz vardır:

  1. Özelliklerinizi Visual Studio'daki paylaşılan iletişim kutularıyla tümleştirin.

  2. Mevcut benzer bir iletişim kutusunda bulunan bir deseni kullanarak kendi iletişim kutunuzu oluşturun.

  3. Etkileşim ve düzen yönergelerini izleyerek yeni bir iletişim kutusu oluşturun.

Bu bölümde, Visual Studio iş akışlarında doğru iletişim kutusu deseninin nasıl seçileceği ve iletişim kutusu tasarımı için yaygın kurallar açıklanmaktadır.

Themes

Visual Studio'daki iletişim kutuları iki temel stilden birini izler:

Standart (okunmamış)

İletişim kutularının çoğu standart yardımcı program iletişim kutularıdır ve bunlar değiştirilmemelidir. Ortak denetimleri yeniden şablonlamayın veya stilize edilmiş "modern" düğmeler veya denetimler oluşturmayı denemeyin. Denetimler ve krom görünümü , iletişim kutuları için standart Windows Masaüstü etkileşim yönergelerini izler.

Temalı

Özel "imza" iletişim kutuları temalı olabilir. Temalı iletişim kutuları, stille ilişkilendirilmiş bazı özel etkileşim desenleri de içeren farklı bir görünüme sahiptir. İletişim kutunuzu yalnızca şu gereksinimleri karşılıyorsa temalayın:

  • İletişim kutusu, sık sık veya birçok kullanıcı tarafından (örneğin, Yeni Proje iletişim kutusu) görülen ve kullanılacak yaygın bir deneyimdir.

  • İletişim kutusunda öne çıkan ürün markası öğeleri (örneğin, Hesap Ayarlar iletişim kutusu) bulunur.

  • İletişim kutusu, diğer temalı iletişim kutularını içeren daha büyük bir akışın ayrılmaz bir parçası olarak görünür (örneğin, Bağlan Hizmet Ekle iletişim kutusu).

  • İletişim kutusu, bir ürün sürümünün tanıtılması veya farklılaştırılmasında stratejik bir rol oynayan bir deneyimin önemli bir parçasıdır.

Temalı iletişim kutusu oluştururken uygun ortam renklerini kullanın ve doğru düzen ve etkileşim desenlerini izleyin. (Bkz. Visual Studio düzeni.)

İletişim kutusu tasarımı

İyi tasarlanmış iletişim kutuları aşağıdaki öğeleri dikkate alır:

  • Desteklenen kullanıcı görevi

  • İletişim kutusu metin stili, dili ve terminolojisi

  • Denetim seçimi ve kullanıcı arabirimi kuralları

  • Görsel düzen belirtimi ve denetim hizalaması

  • Klavye erişimi

İçerik düzenleme

Bu temel iletişim kutusu türleri arasındaki farkları göz önünde bulundurun:

  • Basit iletişim kutuları denetimleri tek bir kalıcı pencerede sunar. Sunu, alan seçici veya simge çubuğu gibi karmaşık denetim desenlerinin çeşitlemelerini içerebilir.

  • Katmanlı iletişim kutuları , tek bir kullanıcı arabirimi parçası birden çok denetim grubundan oluşuyorsa ekran emlaklarından en iyi şekilde yararlanabilmek için kullanılır. İletişim kutusunun gruplandırmaları, kullanıcının herhangi bir anda hangi gruplandırmayı göreceğini seçebilmesi için sekme denetimleri, gezinti listesi denetimleri veya düğmeler aracılığıyla "katmanlıdır".

  • Sihirbazlar , kullanıcıyı bir görevin tamamlanmasına doğru mantıksal bir adım dizisi boyunca yönlendirmek için yararlıdır. Sıralı panellerde bir dizi seçenek sunulur ve bazen önceki panelde yapılan bir seçime bağlı olarak farklı iş akışları ("dallar") sunulur.

Basit iletişim kutuları

Basit bir iletişim kutusu, tek bir kalıcı penceredeki denetimlerin sunumudur. Bu sunu, alan seçici gibi karmaşık denetim desenlerinin çeşitlemelerini içerebilir. Basit iletişim kutuları için standart genel düzenin yanı sıra karmaşık denetim gruplandırmalarında gereken belirli düzenleri de izleyin.

>Create Strong Name Key is an example of a simple dialog in Visual Studio.
Tanımlayıcı Ad Anahtarı Oluştur, Visual Studio'da basit bir iletişim kutusu örneğidir.

Katmanlı iletişim kutuları

Katmanlı iletişim kutuları sekmeler, panolar ve ekli ağaçlar içerir. Bunlar, tek bir kullanıcı arabiriminde sunulan birden çok denetim grubu olduğunda, gayrimenkulleri en üst düzeye çıkarmak için kullanılır. Gruplandırmalar, kullanıcının herhangi bir anda hangi gruplandırmayı göreceğini seçebilmesi için katmanlanır.

En basit durumda, gruplandırmalar arasında geçiş yapma mekanizması bir sekme denetimidir. Çeşitli alternatifler mevcuttur. En uygun stili seçme hakkında bilgi için bkz. Öncelik belirleme ve katmanlama.

Araçlar > Seçenekleri iletişim kutusu, katıştırılmış ağaç kullanan katmanlı bir iletişim kutusu örneğidir:

Tools > Options is an example of a layered dialog in Visual Studio.
Araçlar > Seçenekleri, Visual Studio'da katmanlı bir iletişim kutusu örneğidir.

Sihirbazlar

Sihirbazlar, kullanıcıyı görevin tamamlanmasındaki adımlardan oluşan mantıksal bir diziyle yönlendirmek için kullanışlıdır. Sıralı panellerde bir dizi seçenek sunulur ve kullanıcının bir sonrakine geçmeden önce her adımda devam etmesi gerekir. Yeterli varsayılanlar kullanılabilir olduğunda, Son düğmesi etkinleştirilir.

Kalıcı sihirbazlar, şu görevler için kullanılır:

  • Kullanıcı seçeneklerine bağlı olarak farklı yolların sunulduğu dallanmayı içerir

  • Sonraki adımların önceki adımlardan kullanıcı girişlerine bağımlı olduğu adımlar arasında bağımlılıklar içerir

  • Kullanıcı arabiriminin sunulan seçimleri ve her adımda olası sonuçları açıklamak için kullanılması yeterince karmaşıktır

  • İşlemsel olup, herhangi bir değişiklik işlenmeden önce bir dizi adımın tamamlanması gerekir

Yaygın kurallar

İletişim kutularınızla en iyi tasarımı ve işlevselliği elde etmek için iletişim kutusu boyutu, konum, standartlar, denetim yapılandırması ve hizalaması, kullanıcı arabirimi metni, başlık çubukları, denetim düğmeleri ve erişim tuşlarıyla ilgili bu kuralları izleyin.

Düzene özgü yönergeler için bkz . Visual Studio düzeni.

Size

İletişim kutuları en az 1024x768 ekran çözünürlüğüne sığmalıdır ve ilk iletişim kutusu boyutu 900x700 pikseli aşmamalıdır. İletişim kutuları yeniden boyutlandırılabilir, ancak bu bir gereksinim değildir.

Yeniden boyutlandırılabilir iletişim kutuları için iki öneri vardır:

  1. Minimum boyut, denetim kümesi için kırpma olmadan en iyi duruma getirilecek ve makul yerelleştirme büyümesine uyum sağlayacak şekilde ayarlanacak iletişim kutusu için tanımlanmıştır.

  2. Kullanıcı tarafından ölçeklendirilen boyutun oturumdan oturuma kalıcı olması. Örneğin, kullanıcı bir iletişim kutusunu %150'ye ölçeklendirirse, iletişim kutusunun sonraki bir başlatması %150'de görüntülenir.

Position

İlk başlatmada iletişim kutuları IDE içinde ortalanmış olarak görünmelidir. Yeniden boyutlandırılamayan iletişim kutularının son konumunun kalıcı olması gerekmez, bu nedenle sonraki başlatmalarda ortalanmış olarak görünürler.

Yeniden boyutlandırılabilir iletişim kutuları için boyut sonraki başlatmalarda kalıcı olmalıdır. Yeniden boyutlandırılabilir kalıcı iletişim kutuları için konumun kalıcı olması gerekmez. Bunları IDE içinde ortalanmış olarak görüntülemek, kullanıcının görüntüleme yapılandırması değiştiğinde iletişim kutusunun öngörülemeyen veya kullanılamayan bir konumda görünme olasılığını önler.

Yeniden konumlandırılabilen modsuz iletişim kutuları için, iletişim kutusu daha büyük bir iş akışının ayrılmaz bir parçası olarak sık sık kullanılabilebileceğinden, kullanıcının konumu sonraki başlatmalarda korunmalıdır.

İletişim kutularının başka iletişim kutuları oluşturması gerektiğinde, en üstteki iletişim kutusu üst öğeden sağa ve aşağı doğru art arda yerleştirilmelidir, böylece kullanıcı yeni bir yere gittiği açıkça belli olur.

Modalite

Kalıcı olmak, kullanıcıların devam etmeden önce iletişim kutusunu tamamlaması veya iptal etmesi gerektiği anlamına gelir. Kalıcı iletişim kutuları kullanıcının ortamın diğer bölümleriyle etkileşim kurmasını engellediğinden, özelliğinizin görev akışı bunları mümkün olduğunca tedbirli bir şekilde kullanmalıdır. Kalıcı bir işlem gerektiğinde, Visual Studio'da özelliklerinizi tümleştirebileceğiniz bir dizi paylaşılan iletişim kutusu vardır. Yeni bir iletişim kutusu oluşturmanız gerekiyorsa, benzer işlevlere sahip mevcut bir iletişim kutusunun etkileşim desenini izleyin.

Kullanıcıların yeni kod yazarken Bul ve Değiştir gibi iki etkinliği aynı anda gerçekleştirmesi gerektiğinde, kullanıcının aralarında kolayca geçiş yapabilmesi için iletişim kutusu modeless olmalıdır. Visual Studio genellikle bu tür düzenleyici destekleyen bağlantılı görev için araç pencerelerini kullanır.

Yapılandırmayı denetleme

Visual Studio'da aynı şeyi başaran mevcut denetim yapılandırmalarıyla tutarlı olun.

Başlık çubukları

  • Başlık çubuğundaki metin, onu başlatan komutun adını yansıtmalıdır.

  • İletişim kutusu başlık çubuklarında simge kullanılmamalıdır. Sistemin gerekli olduğu durumlarda Visual Studio logosunu kullanın.

  • İletişim kutuları simge durumuna küçült veya ekranı kapla düğmelerine sahip olmamalıdır.

  • Başlık çubuğundaki yardım düğmeleri kullanım dışı bırakıldı. Bunları yeni iletişim kutularına eklemeyin. Mevcut olduklarında, kavramsal olarak görevle ilgili bir Yardım konusu başlatmaları gerekir.

    Guideline specifications for title bars in Visual Studio dialogs
    Visual Studio iletişim kutularındaki başlık çubukları için kılavuz belirtimleri

Denetim düğmeleri

Genel olarak Tamam, İptal ve Yardım düğmeleri iletişim kutusunun sağ alt köşesinde yatay olarak düzenlenmelidir. İletişim kutusunun alt kısmında denetim düğmeleriyle görsel karışıklık oluşturacak başka düğmeler varsa, alternatif dikey yığına izin verilir.

Acceptable configurations for control buttons in Visual Studio dialogs
Visual Studio iletişim kutularındaki denetim düğmeleri için kabul edilebilir yapılandırmalar

İletişim kutusu varsayılan bir denetim düğmesi içermelidir. Varsayılan olarak kullanılacak en iyi komutu belirlemek için aşağıdaki seçeneklerden birini seçin (öncelik sırasına göre listelenmiştir):

  • Varsayılan olarak en güvenli ve en güvenli komutu seçin. Bu, veri kaybını önlemek ve istenmeyen sistem erişimini önlemek için büyük olasılıkla komutun seçilmesi anlamına gelir.

  • Veri kaybı ve güvenlik faktörleri değilse, kolaylık sağlamak için varsayılan komutu seçin. İletişim kutusu sık veya yinelenen görevleri desteklediğinde, varsayılan olarak en olası komutun dahil olması kullanıcının iş akışını geliştirir.

Varsayılan komut için kalıcı olarak yıkıcı bir eylem seçmekten kaçının. Böyle bir komut varsa, bunun yerine varsayılan olarak daha güvenli bir komut seçin.

Access keys

Tamam, İptal veya Yardım düğmeleri için erişim tuşlarını kullanmayın. Bu düğmeler varsayılan olarak kısayol tuşlarına eşlenir:

Düğme adı Klavye kısayolu
Tamam Enter
İptal Et Esc
Yardım F1

Görüntü

İletişim kutularındaki görüntüleri tedbirli kullanın. İletişim kutularındaki büyük simgeleri yalnızca yer açmak için kullanmayın. Görüntüleri yalnızca uyarı simgeleri veya durum animasyonları gibi iletiyi kullanıcıya iletmenin önemli bir parçasıysa kullanın.

Öncelik belirleme ve katmanlama

Kullanıcı arabiriminize öncelik belirleme

Bazı kullanıcı arabirimi öğelerini ön plana çıkarmak ve iletişim kutularına daha gelişmiş davranış ve seçenekler (belirsiz komutlar dahil) yerleştirmek gerekebilir. Buna yer açarak ve iletişim kutusu gösterildiğinde kullanıcı arabiriminde metin etiketiyle varsayılan olarak görünür hale getirerek yaygın olarak kullanılan işlevleri ön plana getirin.

Kullanıcı arabiriminizi katmanlama

Bir iletişim kutusunun gerekli olduğunu belirlediyseniz ancak kullanıcıya sunmak istediğiniz ilgili işlevler basit bir iletişim kutusunda görüntülenemeyecek kadar ileri gidiyorsa, kullanıcı arabiriminizi katmanlamalısınız. Visual Studio'da en yaygın katmanlama yöntemleri sekmeler, koridorlar veya panolardır. Bazı durumlarda, genişleyip daraltabilen bölgeler uygun olabilir. Uyarlamalı kullanıcı arabirimi genellikle Visual Studio'da önerilmez.

Sekme benzeri denetimler aracılığıyla kullanıcı arabirimini katmanlamanın farklı yöntemlerinin avantajları ve dezavantajları vardır. Durumunuz için uygun bir katmanlama tekniği seçtiğinizden emin olmak için aşağıdaki listeyi gözden geçirin.

Sekme
Anahtar mekanizması Avantajlar ve uygun kullanım Dezavantajlar ve uygunsuz kullanım
Sekme denetimi İletişim kutusu sayfalarını ilgili kümeler halinde mantıksal olarak gruplandırma

İletişim kutusundaki ilgili denetimlerin beşten az (veya iletişim kutusu boyunca bir satıra sığan sekme sayısı) sayfaları için kullanışlıdır

Sekme etiketleri kısa olmalıdır: İçeriği kolayca tanımlayabilen bir veya iki sözcük

Ortak bir sistem iletişim kutusu stili

Örnek: Dosya Gezgini > Öğesi Özellikleri
Açıklayıcı kısa etiketler yapmak zor olabilir

Genellikle bir iletişim kutusunda son beş sekmeyi ölçeklendirmez

Bir satır için çok fazla sekmeniz varsa uygunsuz (alternatif katmanlama tekniği kullanın)

Genişletilebilir değil
Kenar çubuğu gezintisi Sekmelerden daha fazla kategoriye yer açabilen basit anahtarlama cihazı

Düz kategori listesi (hiyerarşi yok)

Genişletilebilir

Örnek: Özelleştir... > Komut Ekle
Üçten az grup varsa yatay alan iyi bir kullanım değildir

Görev açılan menü için daha uygun olabilir
Ağaç denetimi Sınırsız kategoriye izin verir

Kategorilerin gruplandırılmasına ve/veya hiyerarşisine izin verir

Genişletilebilir

Örnek: Araçlar > Seçenekleri
Yoğun iç içe hiyerarşiler aşırı yatay kaydırmaya neden olabilir

Visual Studio'da ağaç görünümlerinin fazlalığı var
Sihirbaz Kullanıcıya görev tabanlı, sıralı adımlarda yol göstererek görev tamamlamaya yardımcı olur: Sihirbaz üst düzey bir görevi temsil eder ve tek tek paneller de genel görevi gerçekleştirmek için gereken alt görevleri temsil eder

Kullanıcının görevi tamamlamak için birden çok düzenleyici ve araç penceresi kullanması gerekeceği durumlarda olduğu gibi, görev Kullanıcı Arabirimi sınırlarını aştığında kullanışlıdır

Görev dallanma gerektirdiğinde kullanışlıdır

Görev adımlar arasında bağımlılıklar içerdiğinde kullanışlıdır

Farklı benzer iletişim kutularının sayısını azaltmak için bir iletişim kutusunda tek bir karar çatalı içeren benzer birkaç görev sunulabildiğinde kullanışlıdır
Sıralı iş akışı gerektirmeyen herhangi bir görev için uygun değil

Kullanıcılar, sihirbaz tarafından çok fazla adımla boğulabilir ve kafaları karışabilir

Sihirbazların doğası gereği sınırlı ekran emlakları vardır
Koridorlar veya panolar

Koridorlar ve panolar, diğer iletişim kutularına ve pencerelere fırlatma noktası görevi görecek iletişim kutuları veya panellerdir. İyi tasarlanmış "koridor" hemen yalnızca en yaygın seçenekleri, komutları ve ayarları ortaya çıkararak kullanıcının ortak görevleri kolayca gerçekleştirmesini sağlar. Gerçek dünya koridoru arkalarındaki odalara erişmek için kapı sağlar gibi, burada daha az yaygın kullanıcı arabirimi ana koridordan erişilebilen ilgili işlevselliğin ayrı "odalarına" (genellikle diğer iletişim kutuları) toplanır.

Alternatif olarak, daha az yaygın olan işlevleri ayrı konumlarda yeniden düzenlemek yerine tüm kullanılabilir işlevleri tek bir koleksiyonda sunan bir kullanıcı arabirimi yalnızca bir panodur.

Hallway concept for exposing additional UI in Outlook
Outlook'ta ek kullanıcı arabirimini kullanıma hazırlayan koridor kavramı

Uyarlamalı Kullanıcı Arabirimi

Kullanıcı arabirimini kullanıma veya kullanıcının kendi kendine bildirilen deneyimine göre göstermek veya gizlemek, diğer bölümleri gizlerken gerekli kullanıcı arabirimini sunmanın başka bir yoludur. Kullanıcı arabiriminin ne zaman gösterileceğine veya gizleneceği konusunda karar verme algoritmaları karmaşık olabileceğinden, visual studio'da bu önerilmez ve bazı durumlarda kurallar her zaman yanlış olacaktır.

Projeler

Çözüm Gezgini projeler

Projelerin çoğu başvuru tabanlı, dizin tabanlı veya karma olarak sınıflandırılır. Üç proje türü de Çözüm Gezgini aynı anda desteklenir. Projelerle çalışmadaki kullanıcı deneyiminin kökü bu pencerenin içinde gerçekleşir. Farklı proje düğümleri başvuru, dizin veya karma mod türünde projeler olsa da, projeye özgü kullanıcı desenlerine ayırmadan önce başlangıç noktası olarak uygulanması gereken ortak bir etkileşim deseni vardır.

Projeler her zaman:

  • Proje içeriklerini düzenlemek için proje klasörleri ekleme özelliğini destekleme

  • Proje kalıcılığı için bir consis çadır modu l tutma

Projeler aşağıdakiler için tutarlı etkileşim modellerini de korumalıdır:

  • Proje öğelerini kaldırma

  • Belgeleri kaydetme

  • Proje özelliği düzenleme

  • Projeyi alternatif bir görünümde düzenleme

  • Sürükle ve bırak işlemleri

Sürükle ve bırak etkileşim modeli

Projeler genellikle başvuru tabanlı (yalnızca depolamadaki proje öğelerine yapılan başvuruları kalıcı hale getirebiliyor), dizin tabanlı (yalnızca projenin hiyerarşisinde fiziksel olarak depolanan proje öğelerini kalıcı hale getirebiliyor) veya karma (başvuruları veya fiziksel öğeleri kalıcı hale getirebiliyor) olarak sınıflandırır. IDE, Çözüm Gezgini içinde üç proje türünü de aynı anda barındırmaktadır.

Sürükleyip bırakma perspektifinden bakıldığında, aşağıdaki özellikler Çözüm Gezgini içindeki her proje türüne uygulanmalıdır:

  • Başvuru tabanlı proje: Önemli nokta, projenin depolamadaki bir öğeye yönelik bir başvuru etrafında sürükleniyor olmasıdır. Başvuru tabanlı bir proje taşıma işlemi için kaynak görevi görürse, yalnızca öğeye başvuruyu projeden kaldırması gerekir. Öğe aslında sabit sürücüden silinmemelidir. Başvuru tabanlı bir proje taşıma (veya kopyalama) işlemi için bir hedef olarak hareket ettiğinde, öğenin özel bir kopyasını oluşturmadan özgün kaynak öğeye bir başvuru eklemelidir.

  • Dizin tabanlı proje: Sürükle ve bırak görünümünden proje, başvuru yerine fiziksel öğenin etrafında sürükleniyor. Dizin tabanlı bir proje taşıma işlemi için kaynak görevi görürse, fiziksel öğeyi sabit sürücüden silmenin yanı sıra projeden kaldırması gerekir. Dizin tabanlı bir proje taşıma (veya kopyalama) işlemi için bir hedef olarak hareket ettiğinde, kaynak öğenin bir kopyasını hedef konumunda yapmalıdır.

  • Karma hedef proje: Sürükle ve bırak görünümünden, bu tür bir projenin davranışı sürüklenen öğenin niteliğine (depolamadaki bir öğeye veya öğenin kendisine başvuru) bağlıdır. Başvurular ve fiziksel öğeler için doğru davranış yukarıda açıklanmıştır.

Çözüm Gezgini yalnızca bir proje türü varsa, sürükleyip bırakma işlemleri kolay olacaktır. Her proje sisteminin kendi sürükle ve bırak davranışını tanımlama özelliği olduğundan, öngörülebilir bir kullanıcı deneyimi sağlamak için belirli yönergelere (Windows Gezgini sürükle ve bırak davranışına göre) uyulmalıdır:

  • Çözüm Gezgini değiştirilmemiş bir sürükleme işlemi (Ctrl veya Shift tuşları basılı tutulduğunda) taşıma işlemine neden olmalıdır.

  • Shift-drag işlemi de taşıma işlemine neden olmalıdır.

  • Ctrl tuşunu basılı tutarak sürükleme işlemi kopyalama işlemine neden olmalıdır.

  • Başvuru tabanlı ve karma proje sistemleri, kaynak öğeye bağlantı (veya başvuru) eklemeyi destekler. Bu projeler sürükle ve bırak işleminin hedefi olduğunda (Ctrl + Shift basılı tutulduğunda), projeye eklenen öğeye başvuru yapılması gerekir

Tüm sürükle ve bırak işlemleri başvuru tabanlı, dizin tabanlı ve karma projelerin birleşimleri arasında mantıklı değildir. Özellikle, dizin tabanlı bir kaynak proje ile başvuru tabanlı hedef proje arasında taşıma işlemine izin vermek sorunludur çünkü taşıma tamamlandıktan sonra kaynak dizin tabanlı projenin kaynak öğeyi silmesi gerekir. Hedef başvuru tabanlı proje daha sonra silinmiş bir öğeye başvuruyla sonuç görünür.

Hedef başvuru tabanlı projenin kaynak öğenin bağımsız bir kopyasını oluşturmaması gerektiğinden, bu tür projeler arasında kopyalama işlemine izin vermek de yanıltıcıdır. Benzer şekilde, dizin tabanlı bir proje başvuruları kalıcı hale getirmediğinden dizin tabanlı hedef projeye Ctrl + Shift tuşlarına basılmamalıdır. Sürükle ve bırak işleminin desteklenmediği durumlarda, IDE bırakma işlemine izin vermemeli ve kullanıcıya bırakma yok imlecini göstermelidir (aşağıdaki işaretçi tablosunda gösterilmiştir).

Sürükle ve bırak davranışını düzgün bir şekilde uygulamak için sürüklemenin kaynak projesinin doğasını hedef projeye iletmesi gerekir. (Örneğin, başvuru mu yoksa dizin tabanlı mı?) Bu bilgiler, kaynak tarafından sunulan pano biçimiyle gösterilir. Sürükleme (veya pano kopyalama işleminin) kaynağı olarak, projenin başvuru tabanlı mı yoksa dizin tabanlı mı olduğuna bağlı olarak, projenin sırasıyla veya sırasıyla sunması CF_VSREFPROJECTITEMS CF_VSSTGPROJECTITEMS gerekir. Bu biçimlerin her ikisi de Windows CF_HDROP biçimine benzer veri içeriğine sahiptir; tek farkı, dosya adları yerine dize listelerinin çiftNULL sonlandırılan bir dize listesi Projref olmasıdır (veya uygun şekilde döndürülür IVsSolution::GetProjrefOfItem ::GetProjrefOfProject ).

Bırakma işleminin (veya pano yapıştırma işleminin) hedefi olarak, bir projenin hem hem CF_VSSTGPROJECTITEMSde CF_VSREFPROJECTITEMS kabul etmesi gerekir, ancak sürükleyip bırakma işleminin tam olarak işlenmesi hedef projenin ve kaynak projenin yapısına bağlı olarak değişir. Kaynak proje, veya CF_VSSTGPROJECTITEMSsunup sunmadığına CF_VSREFPROJECTITEMS göre doğasını bildirir. Bırakma hedefi kendi doğasını anlar ve bu nedenle bir taşıma, kopyalama veya bağlantının gerçekleştirilmesi gerekip gerekmediğine ilişkin kararlar almak için yeterli bilgiye sahiptir. Kullanıcı, Ctrl, Shift veya Ctrl ve Shift tuşlarına basarak hangi sürükle ve bırak işleminin gerçekleştirilmesi gerektiğini de değiştirir. Bırakma hedefinin ve DragOver yöntemlerinde hangi işlemin önceden gerçekleştirileceğini düzgün şekilde belirtmesi DragEnter önemlidir. Çözüm Gezgini, kaynak projeyle hedef projenin aynı proje olup olmadığını otomatik olarak bilir.

Proje öğelerini Visual Studio örnekleri arasında sürükleme (örneğin, bir devenv.exe örneğinden diğerine) özellikle desteklenmez. Çözüm Gezgini bunu da doğrudan devre dışı bırakır.

Kullanıcı her zaman bir öğe seçip hedef konuma sürükleyerek ve öğe bırakılmadan önce aşağıdaki fare işaretçilerinden hangisinin göründüğünü gözlemleyerek sürükle ve bırak işleminin etkisini saptayabilmelidir:

Mouse pointer Komut Açıklama
Mouse Bırakma yok Öğe belirtilen konuma bırakılamaz.
Mouse Kopya Öğe hedef konuma kopyalanır.
Mouse Taşı Öğe hedef konuma taşınır.
Mouse Başvuru ekleme Seçili öğeye başvuru hedef konuma eklenir.

Başvuru tabanlı projeler

Aşağıdaki tabloda, kaynak öğenin yapısına ve başvurulmuş hedef projeler için basılan değiştirici tuşlara göre gerçekleştirilmesi gereken sürükle ve bırak (kesme/kopyalama/yapıştırma) işlemleri özetlenmiştir:

Değiştirici Kategori Kaynak öğe: Başvuru/Bağlantı Kaynak öğe: Fiziksel öğe veya dosya sistemi (CF_HDROP)
Değiştirici yok Eylem Taşı Bağlantı
Değiştirici yok Hedef Özgün öğeye başvuru ekler Özgün öğeye başvuru ekler
Değiştirici yok Source Özgün öğeye başvuru siler Özgün öğeyi korur
Değiştirici yok Result DROPEFFECT_MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_LINK öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Shift+Sürükleme Eylem Taşı Bırakma yok
Shift+Sürükleme Hedef Özgün öğeye başvuru ekler Bırakma yok
Shift+Sürükleme Source Özgün öğeye başvuru siler Bırakma yok
Shift+Sürükleme Result DROPEFFECT_MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır Bırakma yok
Ctrl+Sürükleme Eylem Kopya Bırakma yok
Ctrl+Sürükleme Hedef Özgün öğeye başvuru ekler Bırakma yok
Ctrl+Sürükleme Source Özgün öğeye başvuru korur Bırakma yok
Ctrl+Sürükleme Result DROPEFFECT_COPY öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır Bırakma yok
Ctrl+Shift+Sürükleme Eylem Bağlantı ekleyin Bağlantı ekleyin
Ctrl+Shift+Sürükleme Hedef Özgün öğeye başvuru ekler Özgün öğeye başvuru ekler
Ctrl+Shift+Sürükleme Source Özgün öğeye başvuru korur Özgün öğeyi korur
Ctrl+Shift+Sürükleme Result DROPEFFECT_LINK öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_LINK öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Ctrl+Shift+Sürükleme Not Windows Gezgini'ndeki kısayollar için sürükle ve bırak davranışıyla aynıdır.
Kes/Yapıştır Eylem Taşı Bağlantı
Kes/Yapıştır Hedef Özgün öğeye başvuru ekler Özgün öğeye başvuru ekler
Kes/Yapıştır Source Özgün öğeye başvuru korur Özgün öğeyi korur
Kes/Yapıştır Result Öğe, depolama alanında özgün konumda kalır Öğe, depolama alanında özgün konumda kalır
Kopyala/Yapıştır Eylem Kopya Bağlantı
Kopyala/Yapıştır Source Özgün öğeye başvuru ekler Özgün öğeye başvuru ekler
Kopyala/Yapıştır Result Özgün öğeye başvuru korur Özgün öğeyi korur
Kopyala/Yapıştır Eylem Öğe, depolama alanında özgün konumda kalır Öğe, depolama alanında özgün konumda kalır

Dizin tabanlı projeler

Aşağıdaki tabloda, kaynak öğenin yapısına ve dizin tabanlı hedef projeler için basılan değiştirici tuşlara göre gerçekleştirilmesi gereken sürükle ve bırak (kesme/kopyalama/yapıştırma) işlemleri özetlenmiştir:

Değiştirici Kategori Kaynak öğe: Başvuru/Bağlantı Kaynak öğe: Fiziksel öğe veya dosya sistemi (CF_HDROP)
Değiştirici yok Eylem Taşı Taşı
Değiştirici yok Hedef Öğeyi hedef konuma kopyalar Öğeyi hedef konuma kopyalar
Değiştirici yok Source Özgün öğeye başvuru siler Özgün öğeye başvuru siler
Shift+Sürükleme Eylem Taşı Taşı
Shift+Sürükleme Hedef Öğeyi hedef konuma kopyalar Öğeyi hedef konuma kopyalar
Shift+Sürükleme Source Özgün öğeye başvuru siler Öğeyi özgün konumdan siler
Shift+Sürükleme Result DROPEFFECT_MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Ctrl+Sürükleme Eylem Kopya Kopya
Ctrl+Sürükleme Hedef Öğeyi hedef konuma kopyalar Öğeyi hedef konuma kopyalar
Ctrl+Sürükleme Source Özgün öğeye başvuru korur Özgün öğeye başvuru korur
Ctrl+Sürükleme Result DROPEFFECT_COPY öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_COPY öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Ctrl+Shift+Sürükleme Bırakma yok Bırakma yok
Kes/Yapıştır Eylem Taşı Taşı
Kes/Yapıştır Hedef Öğeyi hedef konuma kopyalar Öğeyi hedef konuma kopyalar
Kes/Yapıştır Source Özgün öğeye başvuru siler Öğeyi özgün konumdan siler
Kes/Yapıştır Result Öğe, depolama alanında özgün konumda kalır Öğe depolamadaki özgün konumdan silindi
Kopyala/Yapıştır Eylem Kopya Kopya
Kopyala/Yapıştır Hedef Özgün öğeye başvuru ekler Öğeyi hedef konuma kopyalar
Kopyala/Yapıştır Source Özgün öğeyi korur Özgün öğeyi korur
Kopyala/Yapıştır Result Öğe, depolama alanında özgün konumda kalır Öğe, depolama alanında özgün konumda kalır

Karma hedef projeler

Aşağıdaki tabloda, kaynak öğenin yapısına ve karma hedef projeler için basılan değiştirici tuşlara göre gerçekleştirilmesi gereken sürükle ve bırak (kesme/kopyalama/yapıştırma) işlemleri özetlenmiştir:

Değiştirici Kategori Kaynak öğe: Başvuru/Bağlantı Kaynak öğe: Fiziksel öğe veya dosya sistemi (CF_HDROP)
Değiştirici yok Eylem Taşı Taşı
Değiştirici yok Hedef Özgün öğeye başvuru ekler Öğeyi hedef konuma kopyalar
Değiştirici yok Source Özgün öğeye başvuru siler Özgün öğeye başvuru siler
Değiştirici yok Result DROPEFFECT_ MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_ MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolamadaki özgün konumdan silinir
Shift+Sürükleme Eylem Taşı Taşı
Shift+Sürükleme Hedef Özgün öğeye başvuru ekler Öğeyi hedef konuma kopyalar
Shift+Sürükleme Source Özgün öğeye başvuru siler Öğeyi özgün konumdan siler
Shift+Sürükleme Result DROPEFFECT_ MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_ MOVE öğesinden ::Drop eylem olarak döndürülür ve öğe depolamadaki özgün konumdan silinir
Ctrl+Sürükleme Eylem Kopya Kopya
Ctrl+Sürükleme Hedef Özgün öğeye başvuru ekler Öğeyi hedef konuma kopyalar
Ctrl+Sürükleme Source Özgün öğeye başvuru korur Özgün öğeyi korur
Ctrl+Sürükleme Result DROPEFFECT_ COPY öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_ COPY öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Ctrl+Shift+Sürükleme Eylem Bağlantı ekleyin Bağlantı ekleyin
Ctrl+Shift+Sürükleme Hedef Özgün öğeye başvuru ekler Özgün kaynak öğeye başvuru ekler
Ctrl+Shift+Sürükleme Source Özgün öğeye başvuru korur Özgün öğeyi korur
Ctrl+Shift+Sürükleme Result DROPEFFECT_ LINK öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır DROPEFFECT_ LINK öğesinden ::Drop eylem olarak döndürülür ve öğe depolama alanında özgün konumda kalır
Kes/Yapıştır Eylem Taşı Taşı
Kes/Yapıştır Hedef Öğeyi hedef konuma kopyalar Öğeyi hedef konuma kopyalar
Kes/Yapıştır Source Özgün öğeye başvuru siler Öğeyi özgün konumdan siler
Kes/Yapıştır Result Öğe, depolama alanında özgün konumda kalır Öğe depolamadaki özgün konumdan silindi
Kopyala/Yapıştır Eylem Kopya Kopya
Kopyala/Yapıştır Hedef Özgün öğeye başvuru ekler Öğeyi hedef konuma kopyalar
Kopyala/Yapıştır Source Özgün öğeyi korur Özgün öğeyi korur
Kopyala/Yapıştır Result Öğe, depolama alanında özgün konumda kalır Öğe, depolama alanında özgün konumda kalır

Çözüm Gezgini sürükleme uygulanırken bu ayrıntılar dikkate alınmalıdır:

  • Birden çok seçim senaryosu için tasarım.

  • Dosya adları (tam yol) hedef projede benzersiz olmalıdır veya bırakma işleminin yapılmasına izin verilmemelidir.

  • Klasör adları bırakılan düzeyde benzersiz (büyük/küçük harfe duyarsız) olmalıdır.

  • Sürüklendiği sırada açık veya kapalı olan dosyalar arasında davranış farklılıkları vardır (yukarıdaki senaryolarda belirtilmemiştir).

  • Üst düzey dosyalar klasörlerdeki dosyalardan biraz farklı davranır.

Dikkat edilmesi gereken bir diğer sorun da, açık tasarımcıları veya düzenleyicileri olan öğelerde taşıma işlemlerinin nasıl işleneceğini öğrenmektir. Beklenen davranış aşağıdaki gibidir (bu tüm proje türleri için geçerlidir):

  1. Açık düzenleyici/tasarımcı kaydedilmemiş değişikliklere sahip değilse düzenleyici/tasarımcı penceresi sessizce kapatılmalıdır.

  2. Açık düzenleyicide/tasarımcıda kaydedilmemiş değişiklikler varsa, sürüklemenin kaynağı bırakmanın gerçekleşmesini beklemeli ve ardından aşağıdakine benzer bir istemle pencereyi kapatmadan önce kullanıcıdan açık belgelerdeki kaydedilmemiş değişiklikleri kaydetmesini istemelidir:

    ==========================================================
         One or more open documents have unsaved changes.
    Do you want to save uncommitted changes before proceeding?
                      [Yes]  [No]  [Cancel]
    ==========================================================
    

Bu, kullanıcıya hedef kopyalarını almadan önce devam eden çalışmayı kaydetme fırsatı verir. Bu işlemeyi etkinleştirmek için yeni bir yöntem IVsHierarchyDropDataSource2::OnBeforeDropNotify eklendi.

Hedef daha sonra öğenin durumunu depolama alanında olduğu gibi kopyalar (kullanıcı Hayır'ı seçtiğinde düzenleyicide kaydedilmemiş değişiklikler dahil değildir). Hedef kopyalama işlemini (içinde IVsHierarchyDropDataSource::Drop) tamamladıktan sonra kaynağa taşıma işleminin silme bölümünü (içinde IVsHierarchyDropDataSource::OnDropNotify) tamamlama fırsatı verilir.

Kaydedilmemiş değişiklikleri olan tüm düzenleyiciler açık bırakılmalıdır. Kaydedilmemiş değişiklikleri olan belgeler için bu, taşıma işleminin kopyalama bölümünün gerçekleştirileceği ancak silme bölümünün durdurulacağı anlamına gelir. Kullanıcının Hayır'ı seçtiği birden çok seçim senaryosunda, kaydedilmemiş değişiklikleri olan belgeler kapatılmamalı veya kaldırılmamalı, ancak kaydedilmemiş değişiklikleri olmayanlar kapatılmalı ve kaldırılmalıdır.