Змінюй хід війни! Допомагай ЗСУ!

Вопросы по C шарп

🔴 21:54 Повітряна тривога в Харків.обл.
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #21
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #22
Кнопки? На которые референсы в коллекции остались? Если сама коллекция в форме, то должен, я ж не знаю, какой там у ТС код.

Так и я не знаю.
но даже если сама коллекция в отдельном классе (зачем? неясно), и при закрытии формы всё приложение, включая экземпляр класса, в котором эта коллекция, не закрывается и где-то физически эта коллекция там висит - это должен знать сам кодер, который это туда положил, и понимать, что делать с данными формы при закрытии формы, которые хранятся где-то в других классах.
Логично было бы отловить закрытие формы и все её элементы уже руками в цикле дэлнуть.

P.S. Но мі єтого не узнаем, так как сендер ушол в несознанку.

P.P.S.
Вколи ей сыворотку правды
Зловеще произнёс админ
И мы узнаем, что нажала
И почему оно само.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #23
А с какой целью кнопки формы создаются в массиве?
Если планируется потом их искать, удалять, добавлять новые - это верный ход.

Изменение свойств "пачками". К примеру, сразу отключить с десяток кнопок. Или изменить цвет шрифта.

Код:
Button[] buttonChair = new Button[8];

После инициализации формы присваиваю:

Код:
            buttonChair[1] = buttonRow1Col1;
            ...
            buttonChair[8] = buttonRow4Col2;

Где-то в методе изменяю свойства:

Код:
            for (int i = 0; i < buttonChair.Length; i++)
            {
                buttonChair[i].Enabled = false;
            }
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #24
Изменение свойств "пачками". К примеру, сразу отключить с десяток кнопок. Или изменить цвет шрифта.

Код:
Button[] buttonChair = new Button[8];

После инициализации формы присваиваю:

Код:
            buttonChair[1] = buttonRow1Col1;
            ...
            buttonChair[8] = buttonRow4Col2;

Где-то в методе изменяю свойства:

Код:
            for (int i = 0; i < buttonChair.Length; i++)
            {
                buttonChair[i].Enabled = false;
            }

Почему не List<button> ?
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #25
B фор как бі, не плохо, но в шарпе ж есть форич
foreach(Control ctrl in Controls)
{
//....
}
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #26
B фор как бі, не плохо, но в шарпе ж есть форич
foreach(Control ctrl in Controls)
{
//....
}

На массивах же тоже работает.

Почему не List<button> ?

Только из-за фиксированного размера. В ходе работы добавляться и удаляться объекты из массива не будут.
Просто не вижу принципиальной разницы. Если она есть, то подскажите, как действовать.

P.S. В идеале отказаться от таких блоков:
Код:
            buttonRow1Col1.Enabled = !row1Col1;
            buttonRow1Col2.Enabled = !row1Col2;
            buttonRow2Col1.Enabled = !row2Col1;
            buttonRow2Col2.Enabled = !row2Col2;
            buttonRow3Col1.Enabled = !row3Col1;
            buttonRow3Col2.Enabled = !row3Col2;
            buttonRow4Col1.Enabled = !row4Col1;
            buttonRow4Col2.Enabled = !row4Col2;
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #27
На массивах же тоже работает.



Только из-за фиксированного размера. В ходе работы добавляться и удаляться объекты из массива не будут.
Просто не вижу принципиальной разницы. Если она есть, то подскажите, как действовать.

P.S. В идеале отказаться от таких блоков:
Код:
            buttonRow1Col1.Enabled = !row1Col1;
            buttonRow1Col2.Enabled = !row1Col2;
            buttonRow2Col1.Enabled = !row2Col1;
            buttonRow2Col2.Enabled = !row2Col2;
            buttonRow3Col1.Enabled = !row3Col1;
            buttonRow3Col2.Enabled = !row3Col2;
            buttonRow4Col1.Enabled = !row4Col1;
            buttonRow4Col2.Enabled = !row4Col2;

Нет разницы, просто лист, как бы, лучше заточен под массивы всякой фигни.
buttonRow1Col1-х у вас не существуют. Массив есть - обїектов в нём нет.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #28
Вообще, все контролы формы уже и так находятся в коллекции этой формы. Можно не делать отдельный массив, чтобы их меребирать
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #29
buttonRow1Col1-х у вас не существуют. Массив есть - обїектов в нём нет.

buttonRow1Col1-х уже добавленные и инициализированные кнопки на форме.

Вообще, все контролы формы уже и так находятся в коллекции этой формы. Можно не делать отдельный массив, чтобы их меребирать

Можно чуть подробнее? Или подскажите как загуглить данный вопрос. Т.к. везде попадаю на динамическое создание объектов на форме с одновременным внесением их в списки.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #30
Можно чуть подробнее? Или подскажите как загуглить данный вопрос. Т.к. везде попадаю на динамическое создание объектов на форме с одновременным внесением их в списки.

Воспользуйся оператором is. его, к стати, хорошо знает гугл.
Код:
foreach (Control control in this.tabPage.Controls)
{ 

if (!(control is Button)) //Если control не TextBox, то переходим к следующей итерации.

continue;

if (control.Name.Substring(6) == dataColumn.ColumnName)
 {
   что-нибудь делаем...
 }
}

Оно переберёт вообще все контролі, но действие выполнит только над баттон.
Если речь о лишнем коде, то так короче всего.
Мопед код не мой, засунь туда вместо this.tabPage.Controls контролс своего экземпляра, формы, или что у тебя там.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #31
Воспользуйся оператором is. его, к стати, хорошо знает гугл.

Оно переберёт вообще все контролі, но действие выполнит только над баттон.
Если речь о лишнем коде, то так короче всего.
Мопед код не мой, засунь туда вместо this.tabPage.Controls контролс своего экземпляра, формы, или что у тебя там.

Ок. Спасибо большое. Буду копаться.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #33
Да. Нет. Оба ответа правильные.

Почему оба?
Если речь о "меньше кода", как заявлено изначально - то лучше не создавать массив. Контролы и так доступны по форме, и самый короткий в написании способ - находить их через is и делать что-то пакетно с "только кнопками", "только текстБоксами" и т.д.
Варик, к стати, нубоклассический.

Ті мне лучше скажи что у меня за бред с тао. фриглют.

Рисую отрезки
Код:
        void drawLine(int x1,int y1,int x2,int y2)
        {

            Gl.glLineWidth(3);
            Gl.glColor3f(0.7f, 1f, 0.6f);
            Gl.glBegin(Gl.GL_LINE_STRIP);
            Gl.glVertex2d(x1, y1);
            Gl.glVertex2d(x2, y2);
            Gl.glEnd();

        }
рисует норм, всё нормально.
Чтобы передавать данные в обычном виде и рисовать понормальному - надо перевернуть ось Y, так как в опенЖэЛе координата 0,0 - верхний левый угол и график рисуерся зеркально.

Делаем поправку
Код:
        void drawLine(int x1,int y1,int x2,int y2)
        {
           int y1m=(oscScreen.Height/2)-y1;
           int y2m=(oscScreen.Height/2)-y2;
            Gl.glLineWidth(3);
            Gl.glColor3f(0.7f, 1f, 0.6f);
            Gl.glBegin(Gl.GL_LINE_STRIP);
            Gl.glVertex2d(x1, y1m);
            Gl.glVertex2d(x2, y2m);
            Gl.glEnd();

        }

всё норм. График съехал на средину и рисуется нормально относительно средины окна, +y вверх, -y вниз.

Теперь надо внести оффсет. И, вот, если сделать
Gl.glVertex2d(x1, (y1m+offset)); - всё пизда, куда б я не вносил оффсет и где бы его не брал - рисует где сам захотел, и изменение оффсета программно не работает. Со скроллбара завожу по изменению скроллбар.валуе изменять - не меняется, стоит на месте график. Хотя писать текстом - пишет, и значение меняется.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #34
Почему оба?
Если речь о "меньше кода", как заявлено изначально - то лучше не создавать массив. Контролы и так доступны по форме, и самый короткий в написании способ - находить их через is и делать что-то пакетно с "только кнопками", "только текстБоксами" и т.д.
Варик, к стати, нубоклассический.

потому что мы нихуя не знаем чего ему надо в итоге сделать. Судя по всему он и сам не знает. Видимо ему в глобалотжиге дали тестовое задание на ссаного джуна, вот он и пытается чего-то сваять чтобы в айтивайти.

Ті мне лучше скажи что у меня за бред с тао. фриглют.

Ниипу, я последний раз опенгл юзал лет 10 назад.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #35
потому что мы нихуя не знаем чего ему надо в итоге сделать. Судя по всему он и сам не знает. Видимо ему в глобалотжиге дали тестовое задание на ссаного джуна, вот он и пытается чего-то сваять чтобы в айтивайти..

А там так можно?
Если такое задание на джуна - то я хочу в IT!!
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #36
Ниипу, я последний раз опенгл юзал лет 10 назад.

Придётся тему в ветке 3D запилить. Тут надежды мало... осталось понять - они там в ветке знают OpenGL, или просто в майке с 3дмаксом рисуют...
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #37
потому что мы нихуя не знаем чего ему надо в итоге сделать.

Написал же. Сократить код, не плодить десятки строк для выключения кнопок и заполнения лейблов.

Видимо ему в глобалотжиге дали тестовое задание на ссаного джуна

Чё это за говноконтора, что будет давать задание на формах? Сейчас повсеместно асп.нет нужон.

И, кстати, чего такое отношение к ссаным джунам? Попался стажер не очень или самого гнобили на старте?

вот он и пытается чего-то сваять чтобы в айтивайти.

Стопиццот мимо. Мне и в юзер саппорте норм живется. =)
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #38
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #39
Написал же. Сократить код, не плодить десятки строк для выключения кнопок и заполнения лейблов.

Ну так сокращай, епта. Хочешь чтобы посоветовали что-то умное - показывай весь код, а иначе тут нехуй обсуждать даже.

Чё это за говноконтора, что будет давать задание на формах? Сейчас повсеместно асп.нет нужон.

бугога. асп.нет нахуй никому не нужен. Ангуляр-реакт нужен, и питон/нод на бекенде.

И, кстати, чего такое отношение к ссаным джунам? Попался стажер не очень или самого гнобили на старте?

Что-то мне подсказывает что мой старт был еще когда ты в школу не пошел :іржач:


Стопиццот мимо. Мне и в юзер саппорте норм живется. =)

Саппорт, фубля, это считай за еду штаны протирать.
 
  • 🔴 21:54 Повітряна тривога в Харків.обл.
  • #40
Я хз шо там щас в глобале, то я так - в рамках сарказма написал.
А нахуй ты на опенгл пишешь, делать нечего?

Я самописец делаю себе.
Можно в GDI рисовать кривую, но он тупой, если данніе валятся больше 30 - 100 отрезков в секунду - буфер сериал-порта начинает переполняться, не успевает отрисовывать.
OpenGL таких проблем не имеет и рисует, сука, бістро.
Или если есть проще варианты - давай советуй. Мне надо до 10000 Б/с валить в кривую и выводить. Это, к стати, не много. Если в окне 512 точек, то 10к вертексов в сек - это всего 20Гц обновление. Даже меньше.
 
Назад
Зверху Знизу