Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521

Как написать функцию, при вызове которой будет изменено свойство объекта, его вызвавшего

04.06.2012, 11:20. Показов 3009. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Предположим, мы создали формовое приложение, добавили к проекту файл ex.cs и написали в нём класс, а внутри класса функцию.


C#
1
2
3
4
5
6
7
8
9
10
public class source
{
 
    public void settext(string s)
    {
       //change text
    }
 
 
}
На форме лежит кнопка.
По нажатию на кнопку нужно вызвать функцию, которая изменит текст.
Собственно сам вопрос: что нужно прописать в функции и на клике кнопки при её вызове что бы осуществить это?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2012, 11:20
Ответы с готовыми решениями:

JS: Как заменить свойство объекта при вызове его метода?
const Some = { hello: 'hello', sayHello: function() { console.log( this.hello ); }, init: function() { self = this; ...

Как написать функцию, которая будет менять имя созданного объекта
Функция changeClas изменяет класс ученика,подскажите,пожалуйста,как написать подобную функцию,которая будет менять имя созданного объекта,...

Метод объекта как его свойство
Создается экземпляр класса, у которого есть метод hl(). Нужно, чтобы для разных экземпляров у метода был разный код. Как реализовать, чтобы...

7
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
04.06.2012, 12:01
Лучший ответ Сообщение было отмечено как решение

Решение

Пусть имя кнопки - button1
C#
1
2
3
4
5
6
7
// это нужно написать в конструкторе формы
button1.Click += button1Click;
// этот код нужно поместить где-то внутри класса формы
void button1Click(object sender, EventArgs e) {
    source s = new source();
    s.settext("Some text...");
}
Всё это можно проделать в Visual Studio в пару кликов мыши. Дважды щелкните на кнопку, когда будете находится в режиме конструктора форм, автоматически добавится метод и привяжется обработчик.

Не по теме:

Прочитайте, пожалуйста, соглашение об именовании на .NET - http://msdn.microsoft.com/ru-r... 29002.aspx. Имена типов и методов должны начинаться с большой буквы, тогда ваш код будет легче читать.

3
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.06.2012, 15:46
Цитата Сообщение от ncuX1 Посмотреть сообщение
Как написать функцию, при вызове которой будет изменено свойство объекта, его вызвавшего
ncuX1, объектно-ориентированное программирование в числе базовых принципов, содержит принцип инкапсуляции. То есть свойства объекта, должны изменяться методами самого объекта. Можно конечно объявить Вашу кнопку public и передать класс как параметр во внешнюю функцию и там добраться до кнопки... (громоздко, ведь функции должен быть известен этот тип), но в чём же тогда смысл класса, как такового. Не лучше ли в методе-обработчике события вызвав внешнюю функцию, передать ей какие-то логические или другие переменные, и получить в ответ значение, целого например, типа.
Проанализировав его в методе же, решить, что, как и с каким контроллом или другим членом делать. Тут (в обработчике) все члены класса доступны без дополнительных расходов.
2
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
04.06.2012, 20:19  [ТС]
А как изменить параметры формы\кнопки при событии?

C#
1
2
3
4
5
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
           
            Form1.Size.Height= 100;
        }
Этот код не работает.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.06.2012, 20:28
Цитата Сообщение от ncuX1 Посмотреть сообщение
А как изменить параметры формы\кнопки при событии?
C#
1
2
3
private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
Form1.Size.Height= 100;
}
а так? :
C#
1
2
3
4
private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
this.Height= 100;
}
В MouseMove менять размеры формы таким образом... можно для примера.
2
brony
77 / 57 / 4
Регистрация: 02.01.2012
Сообщений: 521
04.06.2012, 20:33  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
а так? :
C#
1
2
3
4
private void Form1_MouseMove(object sender, MouseEventArgs e)
 {
this.Height= 100;
}
В MouseMove менять размеры формы таким образом... можно для примера.

Работает, но я имел в виду немного другое.

Предположим ситуацию: на форме кнопка, по кажатию надо передавать функции форму для того, что бы изменить её размер.

Т.е. жмём на кнопку- форма изменяет свой размер.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.06.2012, 21:23
Цитата Сообщение от ncuX1 Посмотреть сообщение
Предположим ситуацию: на форме кнопка, по кажатию надо передавать функции форму для того, что бы изменить её размер.
Т.е. жмём на кнопку- форма изменяет свой размер.
У формы как класса много методов и свойств. У контроллов тоже. Если их не хватает, либо нужна связывающая логика можно в любом месте среди методов написать свой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
void fnkMyButtonsView(Button myCurrentButton;  int myViewMode){
if(myViewMode==0){
myCurrentButton.Text="Mama";
myCurrentButton.Location=Point(20+a*40,40+a*50);
//еще какие-то свойства меняем
}
if(myViewMode==1){
myCurrentButton.Text="Papa";
myCurrentButton.Location=Point(100+a*40,140+a*50);
//еще какие-то свойства меняем
}
}
Не уверен, что на C# это правильно, но это не важно т.к. сам код по смыслу - диковат. Это только пример хода мысли, что-ли.
Переменную myViewMode можно, вообще сделать полем формы, тогда передавать не нужно будет, т.к. из функции fnkMyButtonsView() (как из любого метода формы) её видно: this.myViewMode, а перед вызовом в любой обработчик события, если нужно проверять и - устанавливать. Через неё разные методы могут взаимодействовать, как через глобальную переменную.
2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
05.06.2012, 01:19
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от ncuX1 Посмотреть сообщение
на форме кнопка, по кажатию надо передавать функции форму для того, что бы изменить её размер.
А вы когда в магазине расчитываетесь, так же делаете: даете свой кошелек кассирше, чтобы она сама сколько надо отсчитала?
Или может все-таки спрашиваете сумму и сами расплачиваетесь?

Сделайте так, чтобы метод возвращал значение для нового размера, а уж меняет его пусть сам класс формы в обработчике события по клику.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2012, 01:19
Помогаю со студенческими работами здесь

Как узнать название объекта, вызвавшего событие?
Вроде простой вопрос, но поиск не помог. Есть два NumericUpDown, у обоих одна функция на KeyDown. Как внутри события получить название...

Написать функцию в которой будет выводиться на экран все комбинации букв введенной строки
Помогите написать функцию в которой будет выводиться на экран все комбинации букв введенной строки

Как сохранить в переменную само свойство объекта, а не его значение?
var obj = {}; Object.defineProperty(obj, 'prop', { get: function(){ alert('Результат'); }, set: function(value){ ...

Как в обработчике события получить из sender имя объекта, вызвавшего событие, а не тип?
Добрый день! Помогите, пожалуйста, решить такой вопрос: Есть 2 объекта класса: private Sphere sphA, sphB в классе создается событие...

Перегрузить функцию min(), при которой будет находиться минимальное число среди
Перегрузить функцию min(), при которой будет находиться минимальное число среди: а) двух целых чисел; б) трех целых чисел; в)...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru