Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2016, 18:08   #1
Bergamot
Пользователь
 
Регистрация: 06.01.2016
Сообщений: 18
По умолчанию Работа с формами и checkBox

Есть форма,на которой расположен checkBox.Надо сделать так,если нажат checkBox на одной форме,то при выборе radiobatton на другой,заносился определенный текст в файл.
Делаю так:
Код:
private void button2_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                Form1 form1 = new Form1();
                form1.ShowDialog();
                {
                    if (f8.checkBox1.Checked == true)
                    {
                        File.AppendAllText("R.txt", "1-ый." + ",");
Выскакивает ошибка:if (f8.checkBox1.Checked == true)(Ссылка на объект не указывает на экземпляр объекта.)
Помогите исправить...
Bergamot вне форума Ответить с цитированием
Старый 03.02.2016, 18:49   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так ошибка скорее всего говорит о том, что вы просто f8 не создали и она null.

Но вообще к элементам другой формы нельзя обращаться если не сделать их public. Поэтому лучше сделать у другой формы public методы делающие что надо с ее элементами (ну или возвращающий статус чекбокса в данном случае) и вызывать их.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.02.2016, 19:30   #3
Bergamot
Пользователь
 
Регистрация: 06.01.2016
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так ошибка скорее всего говорит о том, что вы просто f8 не создали и она null.

Но вообще к элементам другой формы нельзя обращаться если не сделать их public. Поэтому лучше сделать у другой формы public методы делающие что надо с ее элементами (ну или возвращающий статус чекбокса в данном случае) и вызывать их.
Modifiers:Public у checkbox у меня стоял.
Код:
 public partial class Form6 : Form
    {
        Form8 f8;
        public Form6()
        {
            Form8 f8 = new Form8();
            InitializeComponent();
        }
Bergamot вне форума Ответить с цитированием
Старый 03.02.2016, 19:34   #4
Bergamot
Пользователь
 
Регистрация: 06.01.2016
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так ошибка скорее всего говорит о том, что вы просто f8 не создали и она null.

Но вообще к элементам другой формы нельзя обращаться если не сделать их public. Поэтому лучше сделать у другой формы public методы делающие что надо с ее элементами (ну или возвращающий статус чекбокса в данном случае) и вызывать их.
А вот есть предупреждение:
Предупреждение1 .f8" нигде не присваивается значение, поэтому оно всегда будет иметь значение по умолчанию null?
Это из - за этого?
Bergamot вне форума Ответить с цитированием
Старый 03.02.2016, 19:35   #5
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Код:
        private void OnCheked(ChekedEventArgs e) => MyCheked?.Invoke(this, e);

        public event EventHandler<ChekedEventArgs> MyCheked;
Код:
public class ChekedEventArgs : EventArgs
{
    public bool Checked {get;set;}
}
Код:
private void button2_Click(object sender, EventArgs e)=>
OnMyCheked(new ChekedEventArgs { Checked = ((CheckBox)sender).Checked});
Использовать очень просто
Код:
f8.MyCheked += MyCheked;
......
private void MyCheked(object sender, ChekedEventArgs e)
{
     Тут вы уже проверяете значение радиобокса и пишите в файл
}
А вот это хорошим словом не назовешь.
Код:
f8.checkBox1.Checked == true
Публиковать контролы - всё равно, что делать закрытые члены класса открытыми. Почитайте на досуге https://habrahabr.ru/post/147148/
Akeloya вне форума Ответить с цитированием
Старый 03.02.2016, 19:42   #6
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Bergamot Посмотреть сообщение
А вот есть предупреждение:
Предупреждение1 .f8" нигде не присваивается значение, поэтому оно всегда будет иметь значение по умолчанию null?
Это из - за этого?
Это из-за того, что вы лезете во внутренности формы, в которые вам не положено лезть извне.

«Вспороть тебе живот,» — отвечал мастер, — «чтобы положить туда рис и налить чай. У меня на сегодня плотное расписание, и мне кажется, такой метод угощения гостей будет очень эффективным.»

Посмотрите то, что я вам написал, я лишь забыл дать ссылку на:
https://habrahabr.ru/post/148562/
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx

если вас смутил синтаксис => то он аналогичен по смыслу {} но работает в c# 5 вроде, так что если у вас не заработало обособьте строчку после => в скобочки {}
Akeloya вне форума Ответить с цитированием
Старый 03.02.2016, 19:58   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Код:
        Form8 f8;
        public Form6()
        {
            Form8 f8 = new Form8();
            InitializeComponent();
        }
Вы создали локальную переменную и сразу выкинули ее, а поле f8 вашего класса так и оставили null.

И да, давайте всему нормальные имена, а не Form999.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с формами alexbad Visual C++ 1 25.12.2011 16:23
Работа с формами sol1tary Общие вопросы по Java, Java SE, Kotlin 0 05.04.2011 21:02
Работа с формами :( sol1tary Помощь студентам 0 05.04.2011 20:57
Работа с формами Toxic Общие вопросы Delphi 8 17.09.2010 16:31
работа с формами Graggis1 Microsoft Office Access 4 17.08.2009 18:14