Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пару элементарных вопросы по основам C#, по синтаксису языка/.NET 
V
    Опции темы
Ilfirin
Дата 29.8.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Strider



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.10.2008
Где: Surreal world

Репутация: нет
Всего: нет



Отсутствует понимание в следующем:

1) Другая форма не видит члены классы, хотя я объявил их public.

 Главная форма 

Код

amespace BCManager {
    public partial class MainForm: Form {
        // загружаемые настройки
        public struct Options {
            public bool ignorecount;
        }

        public Options options;             // загружаемые настройки
        public string appdir;               // директория приложения     
...


Создал еще одну форму (ScanForm) которую вызываю при нажатии на кнопке меню.
Так вот, в обработчиках этой формы я вижу структуры Options но не вижу переменные options, appdir. Как исправить?

2) Можно ли в C# инициализировать структуру как например в C++ через { }. 
Код

struct QWERTY {
  int a;
  string b;
}

...
QWERTY x = { 0, "test" };


Пробовал - не получается.

3) Подскажите(можно сторонний, на ваш взгляд удобный, навороченный) компонент таблицы. Ну что-то вроде дельфийского AdvGrid (TMS), NextGrid, cxGrid. Да хотя бы TStringGrid; Чтобы зараннее можно было настроить заголовок, колонки, выравнивание и т д. Такой компонент существует? Или какая-либо библиотека.
Без привязки к БД.

4) Я правильно понимаю, что в C# из любого модуля виден любой модуль, достаточно его добавить в папку Ссылки/References? То есть не надо что-то типа include или uses.

Извините, второй день за C#.
PM ICQ   Вверх
erm0l0v
Дата 29.8.2012, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



1) По всей видимости вы не создали класс и пытаетесь обратиться к его полям.
Код

MainForm.options

Так вы не сможете добраться до поля, так как его нет. Для того чтобы обратиться к полю нужно либо сдетать его статическим либо создать объект класса.
а) Статическое поле:
Код

public static Options options;

После этого вы сможете обратиться к полю как в примере выше, но обратите внимание что значение этого поля будет одинаково для всех объектов класса MainForm.
б) Создание объекта:
Код

MainForm mainForm = new MainForm();
mainForm.options


Здесь мы создаем новый объект, и обращаемся к его свойству. Обратите внимание что в вашем примере MainForm это класс окна, объек этого класса создается при старте приложения в методе Main. Создавать второй объект не имеет смысла, так как это приведет к созданию еще одной формы. Для того чтобы использовать уже созданный объект вам нужно передать его другому классу. Для того чтобы узнать ссылку на объект внутри MainForm вы можете воспользоваться ключевым словом this:
Код

public partial class MainForm: Form {
     public void CreateScanForm()
    {
         ScanForm scanForm = new ScanForm(this);
         //...
    }
}


public partial class ScanForm : Form {
     public ScanForm(MainForm mainForm)
    {
           mainForm.options;
           //...
    }
}

2) Да можно и структуру и классы и масивы и много еще чего...
Код

MyClass myClass = new MyClass{Param1 = 1, Param2 = 2};
MyClass2 myClass2 = new MyClass2("str"){Param1 = 1, Param2 = 2}; // В случае класса с параметрами в конструкторе
int[] array = new int[]{1, 2, 3, 4, 5, 6};

3)
В случаю WinForms DataGridView.
В случае WPF/Silverlight DataGrid
4)
Да видны только классы помеченный модификатором доступа public. Ничего дополнительно менять не надо, просто добавить проект или dll в References.
PM MAIL   Вверх
Ilfirin
Дата 29.8.2012, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Strider



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 7.10.2008
Где: Surreal world

Репутация: нет
Всего: нет



erm0l0v спасибо за помощь!
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.