Меню

Application run new form1 ошибка

i have the standard code for Program.cs:

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

namespace cellap
{
    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());
        }
    }
}
  1. i created a new project
  2. i imported an existing form1 into it and replaced the existing form1
  3. when i run the app, i get an error on the mentioned line:

    Error 1 The type or namespace name ‘Form1’ could not be found (are you missing a using directive or an assembly reference?) C:UsersalexluvsdanielleAppDataLocalTemporary ProjectscellapProgram.cs 18 33 cellap

does anyone know what the problem is?

asked Jul 5, 2010 at 23:29

Alex Gordon's user avatar

Alex GordonAlex Gordon

54.6k283 gold badges661 silver badges1046 bronze badges

2

Check your namespace. The existing Form1 is more than likely in a different namespace than cellap. Check the Form1.designer.cs class too.

answered Jul 5, 2010 at 23:49

Dennis's user avatar

DennisDennis

20.1k4 gold badges63 silver badges80 bronze badges

When you copied the Form did you change it’s namespace so the Program.cs can actually see it?

answered Jul 5, 2010 at 23:49

Jesper Fyhr Knudsen's user avatar

using ProjectName.folder

Then create an object for the Form1() class like this.

Form1 form1 = new Form1();
Application.Run(form1); 

Also, make sure you actually have a Form1.cs

Servy's user avatar

Servy

201k26 gold badges325 silver badges439 bronze badges

answered Aug 22, 2016 at 18:51

Raymond Dumalaog's user avatar

respublikantc

0 / 0 / 0

Регистрация: 04.03.2020

Сообщений: 3

1

.NET 4.x

04.03.2020, 16:31. Показов 3310. Ответов 1

Метки нет (Все метки)


Вообщем, при работе с курсовой работой появилась ошибка «application.run(new form1()) метод или операция не реализована»
Помогите с этим разобраться
код из Program.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp5
{
    static class Program
    {
       
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

код из формы

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            SidePanel.Height = button1.Height;
            MainControl.BringToFront();
        }
 
             
 
        private void button1_Click(object sender, EventArgs e)
        {
            InitializeComponent();
            SidePanel.Height = button1.Height;
            MainControl.BringToFront();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            
            SidePanel.Height = button2.Height;
            SidePanel.Top = button2.Top;
            WarControl.BringToFont();
        }
    }
}

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



kolorotur

Эксперт .NET

16736 / 12491 / 3281

Регистрация: 17.09.2011

Сообщений: 20,717

05.03.2020, 09:19

2

Лучший ответ Сообщение было отмечено respublikantc как решение

Решение

respublikantc, у вас код всей формы состоит из девяти строчек, разбросанных по трем методам.
Убирайте строчки по одной, как только перестанет падать — проблема найдется в последней убранной строчке.

Цитата
Сообщение от respublikantc
Посмотреть сообщение

C#
1
2
3
private void button1_Click(object sender, EventArgs e)
{
InitializeComponent();

Вызова InitializeComponent не должно быть за пределами конструктора.



1



  • Remove From My Forums
  • Question

  • Trying to run the code here:

    http://msdn.microsoft.com/en-us/library/x0tz73t0.aspx

    Under Form1.cs, I get a squiggle line under here:

    [STAThread]

    public
    static void Main()

    Also, under Program.cs, I get a squiggle line under here:

    Application.Run(new
    Form1());

    The only way I can get rid of those error is to comment out those sections of code. 
    If I comment out the code and hit F5, the project doesn’t do anything at all. 
    What am I missing here?

Answers

  • The compiler doesn’t look for a Program.cs file. The Main method can be in any class.

    My guess is that the OP didn’t copy all the code at the linked page. A «using System» may be missing, and the linked page has «Application.Run(new TicTacToe())».

    • Proposed as answer by

      Thursday, December 16, 2010 4:42 PM

    • Marked as answer by
      Rudedog2
      Saturday, December 18, 2010 1:32 PM

  • It is time for a «do over».

    Create a new Windows Forms application.  Add a new class file, and name it «TicTacToe.cs».  Paste the sample class at your link into this file.  Observe the namespace names.  Copy and paste just the content of the class.

    You should now get an error that there are more than one Main method if you try to build the application.  Open up your Program.cs file and comment out the Main method inside of it.  This should clear the error about more than one Main method. 

    The new class contains a Main method.  It can be seen near the bottom of the class.  The samples in the MSDN library are not designed to work exclusively inside of the Visual Studio IDE.  Most are designed to work from a command line
    build.

    Actually, you may comment out either Main method that you wish.  Most people would prefer to comment out the Main method within the form class, TicTacToe.  Doing so would require that you modify the Main method in the Program.cs file to start TicTacToe,
    instead of Form1.  See code posted above.

    Hope this helps.

    Rudy   =8^D


    Mark the best replies as answers. «Fooling computers since 1971.»

    http://rudedog2.spaces.live.com/default.aspx

    • Marked as answer by
      ryguy72
      Friday, December 17, 2010 2:37 AM
    • Edited by
      Rudedog2
      Friday, December 17, 2010 11:49 AM

>
Выскакивает ошибка при закрытии приложен

  • Подписаться на тему
  • Сообщить другу
  • Скачать/распечатать тему



Сообщ.
#1

,
01.11.06, 08:55

    Member

    **

    Рейтинг (т): нет

    Привет всем.
    Есть простейшее windows приложение.
    Проблемма в том, что когда пытаюсь его закрыть программно выскакивает вываливается с ошибкой.
    Пытаюсь вот так.

    ExpandedWrap disabled

      Close();

      //или так

      Application.Terminate();

      //или так

      Process.GetCurentProcess().Kill();

    Вот с чем вываливается.
    user posted image

    Что его не устраивает?
    Спасибо.


    Otello



    Сообщ.
    #2

    ,
    01.11.06, 08:58

      Senior Member

      ****

      Рейтинг (т): 71

      А debug что говорит?

      Master

      MIF



      Сообщ.
      #3

      ,
      01.11.06, 09:00

        ExpandedWrap disabled

          Application.Exit();


        newline



        Сообщ.
        #4

        ,
        01.11.06, 09:17

          Member

          **

          Рейтинг (т): нет

          Выделяет эту строчку.

          ExpandedWrap disabled

            Application.Run(new Form1());

          ObjectDisposedException was unhandled
          Cannot access a disposed object.
          Object name: ‘Form1’.

          Master

          archimed7592



          Сообщ.
          #5

          ,
          01.11.06, 09:59

            newline, по идее там есть кнопочка copy exception details…скопируй сюда, чего она говорит.


            wdk



            Сообщ.
            #6

            ,
            01.11.06, 10:15

              А зачем так жестоко-то, Kill сразу?
              Пробуй что MIF сказал, либо

              ExpandedWrap disabled

                Application.ExitThread();

              Master

              archimed7592



              Сообщ.
              #7

              ,
              01.11.06, 10:20

                wdk, да он же говорит — даже Close () вылетает…
                кстати вот убойный совет: попробуй отослать отчёт мелкомягким :lol: :lool:


                Otello



                Сообщ.
                #8

                ,
                01.11.06, 10:21

                  Senior Member

                  ****

                  Рейтинг (т): 71

                  Цитата newline @ 01.11.06, 09:17

                  ObjectDisposedException was unhandled
                  Cannot access a disposed object.
                  Object name: ‘Form1’.

                  Посмотри выше по коду где убивается Form1. Там и есть проблема


                  KotovAlexandr



                  Сообщ.
                  #9

                  ,
                  01.11.06, 10:23

                    Full Member

                    ***

                    Рейтинг (т): 3

                    ObjectDisposedException was unhandled
                    Cannot access a disposed object.
                    Object name: ‘Form1’.

                    Тут говорится о том , что произошла ошибка при удалении объекта.
                    Нельзя получить доступ к удалённому объекту (Form1).

                    Я бы проверил с помощью обработки искл. ситуаций :

                    try{

                    Application.Run(new Form1());

                    }
                    catch(ObjectDisposedException err)
                    {
                    MessageBox.Show(err.Message);
                    }

                    Узнал бы где ошибка и нажал F1. MSDN всё скажет!!!

                    Master

                    archimed7592



                    Сообщ.
                    #10

                    ,
                    01.11.06, 10:23

                      PMAXIM, :no: я вот ради прикола попробовал убить…managed способом что-то не получается


                      Otello



                      Сообщ.
                      #11

                      ,
                      01.11.06, 10:25

                        Senior Member

                        ****

                        Рейтинг (т): 71

                        Цитата archimed7592 @ 01.11.06, 10:23

                        вот ради прикола попробовал убить…managed способом что-то не получается

                        Убить что?
                        у формы метод Dispose вызвать не получается?

                        Master

                        archimed7592



                        Сообщ.
                        #12

                        ,
                        01.11.06, 10:29

                          PMAXIM, получается, только форма закрывается и приложение завершается без ошибки. если поставить какой-нить контрол на форму и сделать control.Dispose (), то он исчезнет с формы :) а дальше всё будет работать и нормально закроется.


                          Otello



                          Сообщ.
                          #13

                          ,
                          01.11.06, 10:35

                            Senior Member

                            ****

                            Рейтинг (т): 71

                            Что то я не понял, нормально закрывается или такую же ошибку выдает приложение?


                            newline



                            Сообщ.
                            #14

                            ,
                            01.11.06, 10:35

                              Member

                              **

                              Рейтинг (т): нет

                              archimed7592 (OВот что там пишется.
                              System.ObjectDisposedException was unhandled
                              Message=»Cannot access a disposed object.rnObject name: ‘Form1’.»
                              Source=»System.Windows.Forms»
                              ObjectName=»Form1″
                              StackTrace:
                              at System.Windows.Forms.Control.CreateHandle()
                              at System.Windows.Forms.Form.CreateHandle()
                              at System.Windows.Forms.Control.get_Handle()
                              at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
                              at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
                              at System.Windows.Forms.Control.set_Visible(Boolean value)
                              at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
                              at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
                              at System.Windows.Forms.Application.Run(Form mainForm)
                              at WindowsApplication1.Program.Main() in F:servicesWindowsApplication1WindowsApplication1Program.cs:line 17


                              KotovAlexandr



                              Сообщ.
                              #15

                              ,
                              01.11.06, 10:37

                                Full Member

                                ***

                                Рейтинг (т): 3

                                Выложи код в архиве, посмотрим что там!

                                Master

                                archimed7592



                                Сообщ.
                                #16

                                ,
                                01.11.06, 10:38

                                  form.Dispose () -> форма закрывается, если это главная форма, то программа завершается без ошибки.
                                  control.Dispose () -> контрол исчезает с формы, можно далее работать с формой. при закрытии программы ошибки не выдает.


                                  Viper



                                  Сообщ.
                                  #17

                                  ,
                                  01.11.06, 10:38

                                    Senior Member

                                    ****

                                    Рейтинг (т): 28

                                    Остается выяснить что у нас на строке 17… Но походу трабла в попытке доступа к уже освобожденному объекту Form1

                                    Master

                                    archimed7592



                                    Сообщ.
                                    #18

                                    ,
                                    01.11.06, 10:39

                                      newline, с хэндлами в программе работаешь? небось через winapiinterop? показывай где и как…


                                      Otello



                                      Сообщ.
                                      #19

                                      ,
                                      01.11.06, 10:40

                                        Senior Member

                                        ****

                                        Рейтинг (т): 71

                                        newline ты после выхода никакой контрол на форму бросать не пытаешься случайно? или еще что нибудь с формой сделать?

                                        Master

                                        archimed7592



                                        Сообщ.
                                        #20

                                        ,
                                        01.11.06, 10:40

                                          Цитата Viper @ 01.11.06, 10:38

                                          Остается выяснить что у нас на строке 17

                                          Цитата newline @ 01.11.06, 09:17

                                          Application.Run(new Form1());

                                          Добавлено 01.11.06, 10:42
                                          PMAXIM, после выхода это где к примеру? все финалайзерыдеструкторысобытия связанные с формой происходят до dispose’а (или во время его выполнения).


                                          Otello



                                          Сообщ.
                                          #21

                                          ,
                                          01.11.06, 10:42

                                            Senior Member

                                            ****

                                            Рейтинг (т): 71

                                            Цитата archimed7592 @ 01.11.06, 10:40

                                            Цитата Viper @ 01.11.06, 10:38

                                            Остается выяснить что у нас на строке 17

                                            Цитата newline @ 01.11.06, 09:17

                                            Application.Run(new Form1());

                                            Тогда получается, что после закрытия приложения вызывается Application.Run()?
                                            Странно это

                                            Добавлено 01.11.06, 10:43
                                            archimed7592 После сроки Close()||Exit||Kill().


                                            newline



                                            Сообщ.
                                            #22

                                            ,
                                            01.11.06, 10:43

                                              Member

                                              **

                                              Рейтинг (т): нет

                                              Вот код приложения

                                              ExpandedWrap disabled

                                                public Form1()

                                                        {

                                                            InitializeComponent();

                                                            Form2 LogDialog=new Form2(); // получается 17 строкой

                                                            if (LogDialog.ShowDialog(this) != DialogResult.OK)

                                                            {

                                                                MessageBox.Show(«Логин или пароль указаны не верно!nПриложение будет закрыто»);

                                                                Close();

                                                            }

                                                        }

                                              Master

                                              archimed7592



                                              Сообщ.
                                              #23

                                              ,
                                              01.11.06, 10:48

                                                newline, не знаю как тебе это удаётся…у меня даже

                                                ExpandedWrap disabled

                                                          private void Form1_Load(object sender, EventArgs e)

                                                          {

                                                              try

                                                              {

                                                                  Close();

                                                              }

                                                              finally

                                                              {

                                                                  Controls.Add(new Button());

                                                              }

                                                          }

                                                не ругается


                                                Twilight



                                                Сообщ.
                                                #24

                                                ,
                                                01.11.06, 10:53

                                                  Senior Member

                                                  ****

                                                  Рейтинг (т): 24

                                                  newlineперенеси код проверки пароля или что у тебя там, из конструктора Form1, в main(), либо создавай его в Form1_Load, как у Archimed7592, а то выходит ты в конструкторе уже разрушаешь объет, который в нем должен быть создан

                                                  Master

                                                  archimed7592



                                                  Сообщ.
                                                  #25

                                                  ,
                                                  01.11.06, 10:55

                                                    ага, а я и не заметил, что я не в конструкторе балуюсь :wall:
                                                    да, действительно…ошипка имеет место быть…ну вот и решение — юзай form_load


                                                    Otello



                                                    Сообщ.
                                                    #26

                                                    ,
                                                    01.11.06, 11:04

                                                      Senior Member

                                                      ****

                                                      Рейтинг (т): 71

                                                      Цитата archimed7592 @ 01.11.06, 10:55

                                                      ага, а я и не заметил, что я не в конструкторе балуюсь

                                                      Я тоже не в кострукторе проверял


                                                      newline



                                                      Сообщ.
                                                      #27

                                                      ,
                                                      01.11.06, 11:04

                                                        Member

                                                        **

                                                        Рейтинг (т): нет

                                                        Ваша правда Twilight.
                                                        Спасибо большое всем.

                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                                        0 пользователей:

                                                        • Предыдущая тема
                                                        • .NET: Общие вопросы
                                                        • Следующая тема

                                                        [ Script execution time: 0,0599 ]   [ 16 queries used ]   [ Generated: 28.01.23, 13:50 GMT ]  

                                                        Вопрос:

                                                        using System;
                                                        using System.Collections.Generic;
                                                        using System.Linq;
                                                        using System.Windows.Forms;
                                                        
                                                        namespace Test
                                                        {
                                                        static class Program
                                                        {
                                                        /// <summary>
                                                        /// The main entry point for the application.
                                                        /// </summary>
                                                        public static Form1 f;
                                                        public static Form2 f2;
                                                        [STAThread]
                                                        static void Main()
                                                        {
                                                        Application.EnableVisualStyles();
                                                        Application.SetCompatibleTextRenderingDefault(false);
                                                        Application.Run(new Form1());
                                                        f = new Form1();
                                                        f2 = new Form2();
                                                        }
                                                        }
                                                        }
                                                        private void button1_Click(object sender, EventArgs e)
                                                        {
                                                        Program.f2.Show();
                                                        

                                                        this.Hide(); }

                                                        Кнопка “Ссылка объекта не установлена в экземпляр объекта”. ошибка. Как это исправить? Я не вижу ошибок в моем коде.

                                                        Ответ №1

                                                        Ошибка:

                                                        “В экземпляре объекта не задана ссылка на объект.”

                                                        Средства, которые объект u пытается вызвать, еще не инициализированы, вы вызываете f2.Show(); , но вы должны инициализировать его, прежде чем называть его.

                                                        Вы должны инициализировать Form2, а затем вызвать его, используя имя, которое вы ему дали.

                                                        Заменить:

                                                        private void button1_Click(object sender, EventArgs e)
                                                        {
                                                        Program.f2.Show();
                                                        this.Hide();
                                                        }
                                                        

                                                        С:

                                                         private void button1_Click(object sender, EventArgs e)
                                                        {
                                                        var f2 = new Form2();
                                                        f2.Show();
                                                        this.Hide();
                                                        }
                                                        

                                                        Ответ №2

                                                        Проблема технически лежит здесь:

                                                                Application.EnableVisualStyles();
                                                        Application.SetCompatibleTextRenderingDefault(false);
                                                        Application.Run(new Form1());
                                                        f = new Form1();
                                                        f2 = new Form2();
                                                        

                                                        Application.Run() фактически блокируется до тех пор, пока основная форма не будет закрыта, поэтому две строки ниже (где вы инициализируете формы) никогда не запускаются. Чтобы “исправить” его, вам нужно будет переместить эти строки вверх:

                                                                Application.EnableVisualStyles();
                                                        Application.SetCompatibleTextRenderingDefault(false);
                                                        f = new Form1();
                                                        f2 = new Form2();
                                                        Application.Run(new Form1());
                                                        

                                                        Похоже, вы хотели, чтобы “f” была ссылкой на Form1, поэтому вы должны передать это Application.Run():

                                                                f = new Form1();
                                                        f2 = new Form2();
                                                        Application.Run(f);
                                                        

                                                        Однако я бы обернул эти экземпляры в свойстве, чтобы вы могли убедиться, что они созданы правильно (например, когда вы закрываете Form2 и пытаетесь снова открыть его). Это может выглядеть примерно так:

                                                        static class Program
                                                        {
                                                        /// <summary>
                                                        /// The main entry point for the application.
                                                        /// </summary>
                                                        private static Form1 f1;
                                                        private static Form2 f2;
                                                        
                                                        public static Form1 F1
                                                        {
                                                        get
                                                        {
                                                        if (f1 == null || f1.IsDisposed)
                                                        {
                                                        f1 = new Form1();
                                                        }
                                                        return f1;
                                                        }
                                                        }
                                                        
                                                        public static Form2 F2
                                                        {
                                                        get
                                                        {
                                                        if (f2 == null || f2.IsDisposed)
                                                        {
                                                        f2 = new Form2();
                                                        }
                                                        return f2;
                                                        }
                                                        }
                                                        
                                                        [STAThread]
                                                        static void Main()
                                                        {
                                                        Application.EnableVisualStyles();
                                                        Application.SetCompatibleTextRenderingDefault(false);
                                                        Application.Run(Program.F1);
                                                        }
                                                        
                                                        }
                                                        

                                                        Затем в Form1:

                                                            private void button1_Click(object sender, EventArgs e)
                                                        {
                                                        Program.F2.Show();
                                                        }
                                                        

                                                        0 0 голоса
                                                        Рейтинг статьи
                                                        Подписаться
                                                        Уведомить о
                                                        guest

                                                        0 комментариев
                                                        Старые
                                                        Новые Популярные
                                                        Межтекстовые Отзывы
                                                        Посмотреть все комментарии

                                                        А вот еще интересные материалы:

                                                      • Яшка сломя голову остановился исправьте ошибки
                                                      • Ятрогенная патология врачебные ошибки
                                                      • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
                                                      • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
                                                      • Apple watch разрыв пары ошибка