usunięcie windowsformsapplication

0

witam,

mam aplikację otwierającą plik excel'a w C#. Otwiera się go za pomocą windowsformsapplication i przyciskiem 'Uruchom'. Czy da się zlikwidować tego forms'a z przyciskiem Uruchom, aby aplikacja uruchamiała się od razu?

Form1.cs wygląda następująco:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EdmLib;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        IEdmVault5 Vault = new EdmVault5();
        string NazwaPrzechowalni = "firma";
        string SciezkaPliku = @"C:\firma\SZABLONY\fima\Calc\KD.xls";

        public Form1()
        {
            InitializeComponent();
            Vault.LoginAuto(NazwaPrzechowalni, 0);
            IEdmFolder5 folder = default(IEdmFolder5);
            IEdmFile5 file = Vault.GetFileFromPath(SciezkaPliku, out folder);
            file.GetFileCopy(0);
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start(SciezkaPliku);
        }
                
    }
} 

z kolei Program.cs wygląda tak:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
 
0

Chcesz uruchomić plik excela bez pojawiania się okna WF, czy bez klikania uruchom?
Najprościej ale chyba niezbyt mądrze będzie wrzucić do konstruktora okna kliknięcie przycisku.
Bardziej mądrze będzie usunąć sam przycisk, i jego logikę również wrzucić do konstruktora.
A jeśli wcale nie chcesz mieć okna WF, wydaje mi się, że powinieneś, prawdopodobnie gdzieś w Solution Explorerze zmienić typ aplikacji na konsolową i potem w kodzie usunąć definicję okien. Wtedy konsola pojawi Ci się na moment i uruchomi plik. Możliwe też, że jest jakiś inny lepszy sposób, którego nie znam

0

chciałbym uruchamiać bez pojawiania się WF. Jeśli byłoby bez WF to także button 'Uruchom' by się nie generował.

zmieniłem output type: Console Application. Teraz jak klikam Start Debugging pojawia się jedynie konsola, jednak nie uruchamia wskazanego pliku z lokalizacji

string SciezkaPliku = @"C:\firma\SZABLONY\fima\Calc\KD.xls"; 
0

A powinna? Masz tak napisane w kodzie, że ma uruchomić ten plik? Bo z tego, co załączyłeś to tak nie wynika.

0

Tutaj

        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

tworzona jest forma (new Form1) i uruchamiana pętla komunikatów (Application.Run).
Wystarczy tego nie robić, a kod który chcesz uruchomić wywołać w Main.
Dwie linijki wyżej (EnableVisualStyles i SetCompatibleTextRenderingDefault) też możesz wtedy wywalić.

0
   static void Main()
        {
            Application.Run();

usunąłem 'EnableVisualStyles' i 'SetCompatibleTextRenderingDefault'. Mogę prosić o wyjaśnienie - kod do uruchomienia wywołać w Main?

teraz wygląda to tak, że przeniosłem co nieco do static void main. Jedyny błąd pojawia się przy własnie static void main.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EdmLib;


namespace WindowsFormsApplication2
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void main WindowsFormsApplication2();

        public partial class Form1 : Form
        {
            IEdmVault5 Vault = new EdmVault5();
            string NazwaPrzechowalni = "firma";
            string SciezkaPliku = @"C:\firma\SZABLONY\fima\Calc\KD.xls";

            public Form1()
            {
                Vault.LoginAuto(NazwaPrzechowalni, 0);
                IEdmFolder5 folder = default(IEdmFolder5);
                IEdmFile5 file = Vault.GetFileFromPath(SciezkaPliku, out folder);
                file.GetFileCopy(0);
            }
        }
    }
} 
0

Wydaje mi się, że to po pierwsze powinno wyglądać tak:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EdmLib;
 
 
namespace WindowsFormsApplication2
{
        public partial class Form1 : Form
        {
            IEdmVault5 Vault = new EdmVault5();
            string NazwaPrzechowalni = "firma";
            string SciezkaPliku = @"C:\firma\SZABLONY\fima\Calc\KD.xls";
 
            public Form1()
            {
                Vault.LoginAuto(NazwaPrzechowalni, 0);
                IEdmFolder5 folder = default(IEdmFolder5);
                IEdmFile5 file = Vault.GetFileFromPath(SciezkaPliku, out folder);
                file.GetFileCopy(0);
            }
        }

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
       static void Main(string[] args)
       {
              //tutaj kod
       }
    }
} 

Dodatkowo w miejscu komentarza musisz wpisać co ma sie tworzyć po kolei itd, ale nie chcę Cię wprowadzić w błąd. Popróbuj sam, albo niech ktoś z większą wiedzą się wypowie

1 użytkowników online, w tym zalogowanych: 0, gości: 1