C# TreeNode Control ، كيف يمكنني تشغيل برنامج عند النقر فوق العقدة؟
سؤال
أقوم بإنشاء قاذفة تطبيق لشركتنا وأرغب في استخدام التحكم في TreeNode (لدينا 100s من تطبيقات الشبكة التي تحتاج إلى بنية) ، عندما ينقر المستخدم على عقدة (مثال: التطبيق 1) ثم أرغب في تشغيل البرنامج لوحده ، لا ينتظر قاذفة التطبيق إغلاقه وما إلى ذلك.
كيف يمكنني ان افعل هذا؟ كل ما لدي حاليًا هو بنية treenode في م بدون رمز خلفه بصرف النظر عن:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
}
شكرا جزيلا
المحلول
يمكنك استخدام طريقة العملية الثابتة يبدأ()
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
// Starts Internet Explorer
Process.Start("iexplore.exe");
// Starts the application with the same name as the TreeNode clicked
Process.Start(e.Node.Text);
}
إذا كنت ترغب في تمرير المعلمات أيضًا ، فابحث في استخدام ProcessStartInfo صف دراسي.
التأخير الوحيد الذي ستحصل عليه ، هو انتظار بدء العملية. لن يتم حظر رمزك أثناء تشغيل البرنامج.
نصائح أخرى
أود أن أقترح على الأقل الحصول على نقر مزدوج أو
Enter
KEYPRESS لإطلاق التطبيق ، بدلاً من مجرد التحديد. خلاف ذلك ، ماذا يحدث عندما ينقر المستخدم فقط على التركيز ، أو يتنقل في الشجرة بمفاتيح الأسهم؟ فوضى.TreeVieweventArgs هو المكان الذي تجد فيه العقدة المتأثرة:
e.Node
أشار إيان بالفعل كيف يمكنك إطلاق عملية.
استخدام ProcessStartInfo يتيح لك المزيد من التحكم في التطبيق
عند إنشاء عقد TreeView الخاصة بك ، ضع المسار الكامل للتطبيق داخل كل من خاصية TreeNode.tag واستردادها لتشغيل عمليتك
using System.Diagnostics;
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
//Retrieving the node data
TreeNode myClickedNode = (TreeNode)sender;
//The pointer to your new app
ProcessStartInfo myAppProcessInfo = new ProcessStartInfo(myClickedNode.Tag);
//You can set how the window of the new app will start
myAppProcessInfo.WindowStyle = ProcessWindowStyle.Maximized;
//Start your new app
Process myAppProcess = Process.Start(myAppProcessInfo);
//Using this will put your TreeNode app to sleep, something like System.Threading.Thread.Sleep(int miliseconds) but without the need of telling the app how much it will wait.
myAppProcess.WaitForExit();
}
لجميع الخصائص انظر إلى MSDN ProcessStartinfo فئة وفئة عملية MSDN