Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 53

Ошибка с AutoCompleteStringCollection - Элемент autostr не существует в данном контексте

14.05.2014, 21:27. Показов 1795. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа выдаёт только одну ошибку, ругается на элемент autostr, пишет "элемент autostr не существует в данном контексте". Как это исправить?
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 MySql.Data.MySqlClient;
using System.Xml;
using System.Xml.Linq;
using MySql.Data;
using word = Microsoft.Office.Interop.Word;
 
namespace Diagnostic
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            Building txbx = new Building();
 
            txbx.myCommand = "SELECT namedetal FROM namedetals";
            txbx.myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
            txbx.stolb = "namedetal";
 
            textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox1.AutoCompleteCustomSource = ;
 
                
        }
        class Building
        {
            public string stolb; 
            public string myConnection;
            public string myCommand;
 
            public void Connect()
            {
                AutoCompleteStringCollection autostr = new AutoCompleteStringCollection();
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                MySqlDataReader myReader;
 
                myConn.Open();
                myReader = selectCommand.ExecuteReader();
 
                if (myReader != null)
                {
                    while(myReader.Read())
                    {
                        autostr.Add(myReader[stolb].ToString());
                    }
                }
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2014, 21:27
Ответы с готовыми решениями:

Ошибка при выполнении программы: элемент не существует в данном контексте
задание: вывести на экран номера всех элементов, больших заданного числа программа выдает ошибку. Подскажите, в чем проблема? код:...

Элемент не существует в данном контексте
Есть выражение y= ln(x^3-8)..... Создал метод для вычисления логарифма, но вызвать этот метод в главной функции не могу пишет: элемент не...

Ошибка "элемент ds не существует в данном контексте"
private void button1_Click_1(object sender, EventArgs e) { try { if (ds.Tables !=...

8
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.05.2014, 21:52
Не находит, значит, такой идентификатор. Что такое autostr? Откуда ты его взял?
0
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 53
14.05.2014, 23:04  [ТС]
Туда добавляются данные из таблицы. а потом должно коллекцией выдаваться в текстбокс.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
15.05.2014, 06:14
Цитата Сообщение от Илья29 Посмотреть сообщение
Программа выдаёт только одну ошибку
Согласен, странно это ... Судя по этой строке
Цитата Сообщение от Илья29 Посмотреть сообщение
textBox1.AutoCompleteCustomSource = ;
компилятор должен выдавать минимум две ошибки:
Ошибка 1 Недопустимый элемент ";" в выражении
Ошибка 2 Требуется ";"
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
15.05.2014, 10:42
autostr - это что за тип? Где объявлен?
0
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 53
15.05.2014, 16:45  [ТС]
Ребята прошу прощения строка 34 должна выглядеть так : textBox1.AutoCompleteCustomSource = autostr;
Проблема вся в том что без созданного класса всё работает(код снизу), а когда я создаю класс(код в начале темы) выдаёт ошибку описанную выше.

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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 MySql.Data.MySqlClient;
using System.Xml;
using System.Xml.Linq;
using MySql.Data;
using word = Microsoft.Office.Interop.Word;
 
namespace Diagnostic
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            try
            {
                AutoCompleteStringCollection autostr = new AutoCompleteStringCollection();
 
                string myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
                string myCommand = "SELECT namedetal FROM namedetals;";
                string stolb = "namedetal";
 
                MySqlConnection myConn = new MySqlConnection(myConnection);
                MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                MySqlDataReader myReader;
 
                myConn.Open();
                myReader = selectCommand.ExecuteReader();
 
                if (myReader != null)
                {
                    while(myReader.Read())
                    {
                        autostr.Add(myReader[stolb].ToString());
                    }
                }
 
                textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
                textBox1.AutoCompleteCustomSource = autostr;
 
                
            }
 
            catch
            {
                MessageBox.Show("увы");
            }
 
        }
    }
}
Добавлено через 1 минуту
nmcf, он объявлен в 46 строке.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
15.05.2014, 17:26
Илья29, читайте в книжках про область видимости переменных. Вы объявляете переменную autostr в методе Connect класса Building, а используете в методе Form2_Load класса Form2. Это противоречит семантики языка c#. Как вариант, можно сделать autostr свойством класса Building и в вышеупомянутой строке использовать именно его.
1
1 / 1 / 0
Регистрация: 17.05.2011
Сообщений: 53
15.05.2014, 22:42  [ТС]
всем спасибо кто поучаствовал, отдельное kodv за совет со свойствами.
В итоге сделал так(не знаю как это смотрится со стороны логики или семантики, просто я очень плохо разбираюсь в программировании, но за то работает)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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 MySql.Data.MySqlClient;
using System.Xml;
using System.Xml.Linq;
using MySql.Data;
using word = Microsoft.Office.Interop.Word;
 
namespace Diagnostic
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        public void Form2_Load(object sender, EventArgs e)
        {
            Building txbx1 = new Building();
 
            txbx1.myCommand = "SELECT namedetal FROM namedetals";
            txbx1.myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
            txbx1.stolb = "namedetal";
 
            textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox1.AutoCompleteCustomSource = txbx1.Autostr;
 
            Building txbx2 = new Building();
 
            txbx2.myCommand = "SELECT vidrem FROM vidrems";
            txbx2.myConnection = "DataSource=localhost;Database=arm;username=root;password=root";
            txbx2.stolb = "vidrem";
 
            textBox2.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            textBox2.AutoCompleteSource = AutoCompleteSource.CustomSource;
            textBox2.AutoCompleteCustomSource = txbx2.Autostr;
        }
        public class Building 
        {
            public string stolb; 
            public string myConnection;
            public string myCommand;
            AutoCompleteStringCollection autostr = new AutoCompleteStringCollection();
 
            public AutoCompleteStringCollection Autostr
            {
                get
                {
                    MySqlConnection myConn = new MySqlConnection(myConnection);
                    MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                    MySqlDataReader myReader;
 
                    myConn.Open();
                    myReader = selectCommand.ExecuteReader();
 
                    if (myReader != null)
                    {
                        while (myReader.Read())
                        {
                            autostr.Add(myReader[stolb].ToString());
                        }
                    }
                    return autostr;
                }
                set
                {
                    autostr = value;
                }
            }
        }
    }
}
Добавлено через 1 минуту
Да, кстати, если есть советы как реализовать это лучше, они принимаются! Заранее спасибо!
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
16.05.2014, 05:11
Цитата Сообщение от Илья29 Посмотреть сообщение
есть советы как реализовать это лучше, они принимаются!
Небольшие советы есть (см. комментарии в коде):
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
            public AutoCompleteStringCollection Autostr
            {
                get
                {
                    MySqlConnection myConn = new MySqlConnection(myConnection);
                    MySqlCommand selectCommand = new MySqlCommand(myCommand, myConn);
                    MySqlDataReader myReader;
 
                    myConn.Open();
                    myReader = selectCommand.ExecuteReader();
 
                    if (myReader != null)
                    {
                        while (myReader.Read())
                        {
// Добавляем новую строку в список только в случае ее отсутствия, иначе при втором вызове данного метода у вас все строки задвоятся.
//А так в коллекцию добавятся только те строки, которые появились в базе между вызовами данного свойства
                            if(!autostr.Contains(myReader[stolb].ToString()))
                                autostr.Add(myReader[stolb].ToString());
                        }
                    }
                    return autostr;
                }
// Это вообще нах удалить надо. Зачем давать возможность пользователю класса изменять значение данного свойства?
/*                set
                {
                    autostr = value;
                }*/
            }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2014, 05:11
Помогаю со студенческими работами здесь

Элемент формы не существует в данном контексте
Здравствуйте, У меня есть класс и в нем есть функция, в которой задействованы элементы формы. Есть возможность к ним обратиться? А то...

С# Элемент matrix не существует в данном контексте
В теле метода пытаюсь работать с внешней переменной массива - выдает ошибку. Как быть? Переменная и класс находятся в одном пространстве...

Проект с графикой: Элемент "g" не существует в данном контексте
Очень надо создать программу, который будет рисовать графики, но я столкнулся с проблемами в рисовании. private void...

Элемент "textbox1" не существует в данном контексте
В чём ошибка, можете сказать? using System.Drawing; using System.Windows.Forms; using System; class SimpleWindowsForm : Form {...

Ошибка элемент не существует в текущем контексте
Подскажите пожалуйста как исправить, я так понял что нужно еще до Main'а объявить матрицу, но никак не получается все равно using System;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru