Метод расширения (ошибка)

296
05 июня 2017, 21:09

Подскажите, что я делаю не так? (посмотрите изображения ниже)

Для удобства FormControl это Form2 (для понимания вопроса, вот тема: ссылка)

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 Microsoft.Win32;
namespace MySoft
{
    public partial class FormControl : Form
    {
        public static class FormHelper
        {
            public static void ShowInvisible(this Form form)
            {
                // сохраняем параметры окна
                bool needToShowInTaskbar = form.ShowInTaskbar;
                WindowState initialWindowState = form.WindowState;
                // делаем окно невидимым
                form.ShowInTaskbar = false;
                form.WindowState = FormWindowState.Minimized;
                // показываем и скрываем окно
                form.Show();
                form.Hide();
                // восстанавливаем параметры окна
                form.ShowInTaskbar = needToShowInTaskbar;
                form.WindowState = initialWindowState;
            }
        }
        public FormControl()
        {
            InitializeComponent();
        }
        // Остальной код
    }
}

Отдельный класс FormHelper.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MySoft
{
    public static class FormHelper // У этого класса ноль ссылок...
    {
        public static void ShowInvisible(this FormControl form)
        {
            // сохраняем параметры окна
            bool needToShowInTaskbar = form.ShowInTaskbar;
            FormWindowState initialWindowState = form.WindowState;
            // делаем окно невидимым
            form.ShowInTaskbar = false;
            form.WindowState = FormWindowState.Minimized;
            // показываем и скрываем окно
            form.Show();
            form.Hide();
            // восстанавливаем параметры окна
            form.ShowInTaskbar = needToShowInTaskbar;
            form.WindowState = initialWindowState;
        }
    }
}
Answer 1

Вы не можете использовать такие параметры (this Form form) во вложенном классе. Соответственно, нужно вынести класс. И исправьте WindowState на FormWindowState:

namespace MySoft
{ 
     public static class FormHelper
     {
        public static void ShowInvisible(this Form form)
        {
            // сохраняем параметры окна
            bool needToShowInTaskbar = form.ShowInTaskbar;
            FormWindowState initialWindowState = form.WindowState;
            // делаем окно невидимым
            form.ShowInTaskbar = false;
            form.WindowState = FormWindowState.Minimized;
            // показываем и скрываем окно
            form.Show();
            form.Hide();
            // восстанавливаем параметры окна
            form.ShowInTaskbar = needToShowInTaskbar;
            form.WindowState = initialWindowState;
        }
    }

    public partial class FormControl : Form
    {
        public FormControl()
        {
            InitializeComponent();
        }
        // Остальной код
    }
}
Answer 2

Вынесите класс FormHelper за пределы класса FormControl.
Он не может быть вложенным, о чем вам IDE и говорит.
И в оригинальном ответе это был класс "сам по себе", а вы его внутрь другого засунули.

READ ALSO
JS+CryptoAPI: как выбрать криптопровайдера?

JS+CryptoAPI: как выбрать криптопровайдера?

Стоит задача: определить из браузера, установлен ли у пользователя криптопровайдеры КриптоПРО CSP или VipNet CSP

297
Не получается вызвать событие при клике на canvas, Pixi.js

Не получается вызвать событие при клике на canvas, Pixi.js

Изучаю pixijs, не могу понять, почему это не работает

399
Как в js обрезать 5 символов?

Как в js обрезать 5 символов?

Переменная из php передает "8187 \r\n"Как в js обрезать - пробел\r\n, чтобы было "8187"; ?

410