Söz konusu form zaten açılmışsa, bir MDI konteynerinde belirli bir formun açılmasını engellemenin bir yolu var mı?Yinelenen MDI alt formlarını engelle
cevap
:
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(MyFormType))
{
form.Activate();
return;
}
}
Form newForm = new MyFormType();
newForm.MdiParent = this;
newForm.Show();
AFAIK standart bir yolu yoktur bakın. Bunu kendiniz uygulamak zorundasınız. Ben öyle yapardım: iplik güvenlik endişe kaynağıdır
class TheForm: Form
{
private static TheForm Instance;
private TheForm() // Constructor is private
{
}
public static Show(Form mdiParent)
{
if (Instance == null)
{
// Create new form, assign it to Instance
}
else
Instance.Activate(); // Not sure about this line, find the appropriate equivalent yourself.
}
protected override OnFormClose(EventArgs e)
{
Instance = null;
base.OnFormClose(e);
}
}
, uygun lock
s eklenir.
Konu güvenliği, bir sorun olmamalı vb.net benim için bu kod çalışması . – Groo
, bunun tekil deseninin bir uygulaması olduğunu ekleyebilirdiniz. Fredrik Mörk'ün çözümünü tercih ediyorum, form.Activate yerine SOC –
Bu yazı çok eski olmasına rağmen, diye düşündüm
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(Form2))
{
form.Activate();
return;
}
}
Form2 newForm = new Form2();
newForm.MdiParent = this;
newForm.Show();
}
çalışan bu kod Bu bir yardım ekleyecektir.
Form Minimize de edilmişse, işlem yapması gerekiyor. İşte tam örnektir:
foreach (Form form in this.MdiChildren)
{
if (form.GetType() == typeof(frmMain))
{
if (form.WindowState == FormWindowState.Minimized)
{
form.WindowState = FormWindowState.Normal;
}
form.Activate();
return;
}
}
Form frm = new frmMain();
frm.MdiParent = this;
frm.Show();
yalnızca tek bir iplikten GUI denetimlere erişmek beri
For Each f As Form In Application.OpenForms If TypeOf f Is form_name Then f.Activate() f.WindowState = FormWindowState.Normal f.StartPosition = FormStartPosition.WindowsDefaultLocation f.WindowState = FormWindowState.Maximized
Return
End If
Next
form_name .MdiParent = Me
form_name .Show()
- 1. jquery atanan yinelenen işlevi engelle
- 2. Aynı alt pencereyi MDI biçiminde birden çok kez engelleme
- 3. Django formlarını nerede tanımlarsınız?
- 4. Delphi MDI Uygulaması ve MDI Çocuklarının başlık çubuğu
- 5. DataSource Ekle veya Güncelle sırasında yinelenen değeri engelle
- 6. Yinelenen girdileri kaldırmak için Grunt cssmin görevini engelle
- 7. Bir Delphi 5 ActiveX dll'den MDI alt penceresini nasıl oluşturabilirim ve bir Delphi XE MDI üst öğesinin içine yerleştirebilirim?
- 8. İç içe yerleştirme formlarını Thymeleaf
- 9. Özel görünümlerde rails_admin formlarını kullanın?
- 10. Symfony formlarını Twig olmadan kullanma
- 11. MDI modeli veya Dock Windows?
- 12. MDI Çocuk Formu, WinForms'de ana formlara uymuyor
- 13. Delphi 2010/XE2 MDI Örnek - Eksik Kod
- 14. Switch GUI uygulama davranışını SDI ve MDI arasında
- 15. Delphi MDI - işlemeyi açma/kapatma/etkinleştirme çocuk formu
- 16. Varlık Framework yinelenen nesne ve tüm alt özellikleri
- 17. 'Nihayet' Yineleyicilerde Engelle
- 18. Fullpage.js - Kaydırmayı engelle
- 19. RelativeLayout'taki görünümlerin çakışmasını engelle
- 20. Dosyaların Debug'da oluşturulmasını engelle
- 21. engelle Visual Studio
- 22. Swift: ABPeoplePickerNavigationController'ın kapatılmasını engelle
- 23. WP7 ListBox'un kaydırılmasını engelle
- 24. CouchDB - izinsiz okunmaları engelle
- 25. Oturum açma Engellenmeyi engelle?
- 26. Belirli özelliklerin güncellenmesini engelle?
- 27. Dize yazdırılan python'u engelle
- 28. UISearchBarController'ın UINavigationBar'ı göstermesini engelle
- 29. İşaretleyici imlecini CSS'ye engelle?
- 30. WebKit'teki eklenti yüklemesini engelle
'u ihlal etmiyor form.WindowState = FormWindowState.Normal; eskiden farklı olarak, bu pencere en aza indirilmiş olsa bile ikincisi çalışacaktır. – docesam