powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# - обработка контролов текущей формы методами из другого класса
12 сообщений из 12, страница 1 из 1
C# - обработка контролов текущей формы методами из другого класса
    #38516588
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время и с Наступающим всех!

А кто подскажет, как правильно реализовать:

есть куча форм, на них куча контролов. Некоторые методы данного класса по обработке этой кучи контролов одинаковы для всех форм - их можно вынести в отдельный класс и из того класса бомбить контролы - вопрос, как правильно в методы того отдельного класса передать ссылку на форму, в которой надо почикать контролы ???
Например this.pictureBox... - это обращение к картинке на данной форме - как реализовать аналог, только чтоб к определенному контролу на определенной форме стукануться из метода другого класса - то есть указать тому методу форму, по контролу которой стучать???

заранее спасибо!
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516595
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
методы вызываются из экземпляра класса, this, как передаваемый параметр - че-то не прокатывает
/
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516612
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо сделать публичные методы у нужной формы, и вызывать их где нужно.
либо сделать модификаторы доступа у членов, скажем internal (неджедайский подход)

С наступающим!
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516948
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79либо сделать публичные методы у нужной формы, и вызывать их где нужно.
либо сделать модификаторы доступа у членов, скажем internal (неджедайский подход)

С наступающим!

спасибо!

немножко не то - вот чего я добиваюсь:
в главном окне создаются новые окна:
, например так:
Код: c#
1.
2.
3.
4.
5.
        private void button3_Click(object sender, EventArgs e)
        {
            Jobs fjob = new Jobs();
            fjob.ShowDialog();
         }


а Jobs - наследник FadeForm (FadeForm - наследник Form)
вот окно создано и появилось. В окне куча контролов. Как дорваться к этим контролам из другого класса, контролы все в Public. Само окно - Public. Наверно надо передать this в другой класс. И какого тогда типа в методе того другого класса объявлять параметр?

вот, к примеру, какие окна могут быть:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        private void button5_Click(object sender, EventArgs e)
        {
            [color=red]MixedAlphabet[/color] ma = new MixedAlphabet();
            ma.ShowDialog();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            [color=red]BadAlphabet[/color] ba = new BadAlphabet();
            ba.ShowDialog();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            [color=red]MissingLetter[/color] ml = new MissingLetter();
            ml.ShowDialog();
        }



выделенные классы - все наследники FadeForm? который в свою очередь - наследник Form. Ясное дело, что при передаче параметра компилятор ругается на несоответствие типа - в это все и уперлось...
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516950
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может в сторону делегатов покопать...?
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516956
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Delphi такой прием легко прокатывает - я создал отдельный юнит, в нем процедурку, у процедуры - параметр класса TForm и в эту процедуру передаю любую форму и получаю доступ к любому контролу на форме:
тоже самое на сишарпе никак не прокатывает:
Код: pascal
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.
unit Unit3;

interface
 uses Forms,StdCtrls;
	procedure aaa(a:TForm);
implementation
  procedure aaa(a:TForm);
  var
    k:Byte;
    i:Integer;
  begin
    for i:=0 to a.componentCount -1 do
    begin
      if a.Components[i] is TEdit then
         TEdit(a.Components[i]).Text := 'Lisa';
		end;
  end;
end.

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    edt1: TEdit;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit3;

{$R *.dfm}

procedure TForm2.btn1Click(Sender: TObject);
begin
  aaa(Form2);
end;

end.
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516960
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75тоже самое на сишарпе никак не прокатывает

Ерунда. Вместо TForm в шарпе Form. Тот же самый подход.

Другое дело, что этот подход напрочь неправильный. Делаете интерфейс с общими методами, наследуете все ваши произвольные формы от него. Доступ к контролам на одной форме из другой - не есть джедайский поход
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516963
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Galadriel75тоже самое на сишарпе никак не прокатывает

Ерунда. Вместо TForm в шарпе Form. Тот же самый подход.

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


согласен со всем вышесказанным... как оказалось, сработало вот как:

Код: c#
1.
 c.GetElementByTag((FadeForm)this, 100 + i).Visible = false;


то есть всего-то лишь надо было преобразовывать к классу FadeForm
а вот сам метод из другого класса:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        public PictureBox GetElementByTag(FadeForm f,int Tg)
        {
            int tag;
            foreach (Control ctrl in f.Controls)
            {
                if (ctrl is PictureBox)
                {
                    PictureBox pb = ctrl as PictureBox;
                    tag = Convert.ToInt16(pb.Tag);
                    if (tag == Tg)
                        return pb;
                }
            }
            return null;
        }



лепил на скорую руку, мысля наследоваться из общей формы пришла уже позже, но уже нет времени все ломать и перекраивать...

только там доступ к контролам на форме не из другой формы, а из класса, в котором лежит лавина общих методов, которые юзаются во всем проекте...
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516966
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже проще можно:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public PictureBox GetElementByTag(FadeForm f,int Tg)
        {
            int tag;
            foreach (Control ctrl in f.Controls)
            {
                if (ctrl is PictureBox)
                {
                    tag = Convert.ToInt16(ctrl.Tag);
                    if (tag == Tg)
                    return (PictureBox)ctrl;
                }
            }
            return null;
        }
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38516967
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик можно закрывать!
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38522433
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galadriel75даже проще можно:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public PictureBox GetElementByTag(FadeForm f,int Tg)
        {
            int tag;
            foreach (Control ctrl in f.Controls)
            {
                if (ctrl is PictureBox)
                {
                    tag = Convert.ToInt16(ctrl.Tag);
                    if (tag == Tg)
                    return (PictureBox)ctrl;
                }
            }
            return null;
        }



не джедайский подход, интерфейсы наше всё
...
Рейтинг: 0 / 0
C# - обработка контролов текущей формы методами из другого класса
    #38531007
Galadriel75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationGaladriel75даже проще можно:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public PictureBox GetElementByTag(FadeForm f,int Tg)
        {
            int tag;
            foreach (Control ctrl in f.Controls)
            {
                if (ctrl is PictureBox)
                {
                    tag = Convert.ToInt16(ctrl.Tag);
                    if (tag == Tg)
                    return (PictureBox)ctrl;
                }
            }
            return null;
        }



не джедайский подход, интерфейсы наше всё

это не самое главное в нашем бытии
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# - обработка контролов текущей формы методами из другого класса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]