Forum
Merhabalar;
C# ile geliştirdiğim programda, solution içerisinde bulunan modülere ait klasörler var. Bu klasörler içerisinde bulunan Windows formlarını datagrid ile listelemek istiyorum. Konuyla alakalı bir çözüm bulamadım. bu konuda yardımcı olabilirmisiniz?
Solution önizlemesine aşağıdaki linkten ulaşabilirsiniz.
Merhabalar;
Aşağıdaki gibi girid içinde Form isimlerini ve Hangi klasörde olduklarını listeleyebilirsizin, Sadece istediğiniz klasör için süzme yapabilirsiniz.
Projeyi indirmek için Link; https://drive.google.com/file/d/1jce5RIkr5rluDuKEBama84-4EFmYvRnv/view?usp=sharing
(Destek için Serdal DİNÇER'e teşekkürler.)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FormNames
{
public partial class Form1 : Form
{
class formAttributes
{
public string Ad { get; set; }
public string Klasor { get; set; }
public string Baslik { get; set; }
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
GetFormNames();
}
private void GetFormNames()
{
List<formAttributes> formNames = new List<formAttributes>();
formNames.Clear();
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type t in asm.GetTypes())
{
try
{
if (t.BaseType == typeof(Form) & t.Namespace.IndexOf(Application.ProductName) > -1 & t.BaseType.Name == "Form")
{
var cTor = t.GetConstructor(Type.EmptyTypes);
if (cTor != null)
{
var form = (Form)cTor.Invoke(new object[] { });
formNames.Add(new formAttributes() { Ad = form.Name, Baslik = form.Text, Klasor = t.FullName.Replace(form.Name, "").Replace(Application.ProductName, "").Replace(".", "") });
}
}
}
catch { }
}
}
dataGridView1.DataSource = formNames;
}
}
}
Syn Ali Uysal;
Cevabınız için Teşekkür ederim.
listeleme esnasınıda bekleme süresi performans açısından biraz zayıf olduğunu gözlemledim bu listeleme işlemini daha kısa sürelerde yapmak mümkünmü acaba?
Merhabalar;
Nasıl yapılabileceği konusunda yardımcı oldum, hızlandırmak için bir çok farklı yol mevcut fakat biraz çalışılması gerekiyor uygun bir vakitte göz gezdirir size bilgi veririm.
Syn Ali Uysal;
Cevabınız için Teşekkür ederim.
listeleme esnasınıda bekleme süresi performans açısından biraz zayıf olduğunu gözlemledim bu listeleme işlemini daha kısa sürelerde yapmak mümkünmü acaba?
db ye yazıp ordan da okuyabilirsiniz .
syn Birol AYDUGAN;
Cevabınız için teşekkür ederim.
Evet bende o şekilde yaptım.
Şuan için en mantıklı yol bu sanırım...