C# TreeNode Control ، كيف يمكنني تشغيل برنامج عند النقر فوق العقدة؟

StackOverflow https://stackoverflow.com/questions/2161728

  •  23-09-2019
  •  | 
  •  

سؤال

أقوم بإنشاء قاذفة تطبيق لشركتنا وأرغب في استخدام التحكم في 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 صف دراسي.

التأخير الوحيد الذي ستحصل عليه ، هو انتظار بدء العملية. لن يتم حظر رمزك أثناء تشغيل البرنامج.

نصائح أخرى

  1. أود أن أقترح على الأقل الحصول على نقر مزدوج أو Enter KEYPRESS لإطلاق التطبيق ، بدلاً من مجرد التحديد. خلاف ذلك ، ماذا يحدث عندما ينقر المستخدم فقط على التركيز ، أو يتنقل في الشجرة بمفاتيح الأسهم؟ فوضى.

  2. TreeVieweventArgs هو المكان الذي تجد فيه العقدة المتأثرة: e.Node

  3. أشار إيان بالفعل كيف يمكنك إطلاق عملية.

استخدام 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top