Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.07;
Скачать: CL | DM;

Вниз

обратиться к контролам на другой форме (.NET)   Найти похожие ветки 

 
anton773 ©   (2006-12-16 20:32) [0]

Прошу прощения за глупый вопрос. как в .NET(Windows form) обратиться к контролам на другой форме. Например в win32 все просто : Form2.edit1.text:="привет"; а в .NET это не катит


 
Eraser ©   (2006-12-16 20:55) [1]

> [0] anton773 ©   (16.12.06 20:32)

почему не катит, просто при создании доп. формы нужно сохранить ссылку на неё.


 
anton773 ©   (2006-12-16 21:04) [2]


> при создании доп. формы нужно сохранить ссылку на неё

например как?


 
Eraser ©   (2006-12-16 21:15) [3]

   public partial class Form1 : Form
   {
       private Form2 fm2;

       public Form1()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           fm2 = new Form2();
           fm2.Show();
       }


 
anton773 ©   (2006-12-17 04:25) [4]

пробовал так:procedure TWinForm1.ToolBar1_ButtonClick(sender: System.Object; e: System.Windows.Forms.ToolBarButtonClickEventArgs);
var
form:TWinForm;
begin

   if e.Button= ToolBarButton3 then
     begin
      form:= WinForm.TWinForm.Create;
     form.Show;
     form.textbox1.text:="привет";
     end;
end;
даже не компилируется.Где ошибка?


 
Palladin ©   (2006-12-17 09:43) [5]

Тебе разве компилятор о ней не сказал?


 
anton773 ©   (2006-12-17 17:37) [6]


> Тебе разве компилятор о ней не сказал?

кричит мол не знаю что такое textbox1. Не понимаю в чем дело в разделе uses необходимый юнит вроде прописан. да и   form.Show; работает на ура.


 
Eraser ©   (2006-12-17 18:04) [7]

ах да. по-умолчанию C# помещает поля компонентов в блок private, т.о. образом, чтобы сделать компонент доступным из других модулей, надо объявить это поле как public, например имеется
private System.Windows.Forms.CheckBox checkBox1;
меняем на
public System.Windows.Forms.CheckBox checkBox1;

однако же, в идеале, лучше делать через свойства, т.е. вот так

       private System.Windows.Forms.CheckBox checkBox1;

       public System.Windows.Forms.CheckBox chBox1
       {
           get
           {
               return (checkBox1);
           }
           set
           {
               checkBox1 = value;
           }
       }


 
anton773 ©   (2006-12-17 18:10) [8]


> Eraser ©

Спасибо ! Затолкал textbox в public.Теперь все работает.


 
anton773 ©   (2006-12-17 18:15) [9]

P.S А нельзя ли сделать так чтобы все компоненты по умолчанию помещались в public? Вручную перетаскивать из секции в секцию лень ;-). Работаю с Delphi 2005 (Delphi .NET)


 
Eraser ©   (2006-12-17 18:18) [10]

> [9] anton773 ©   (17.12.06 18:15)


> P.S А нельзя ли сделать так чтобы все компоненты по умолчанию
> помещались в public?

не в курсе.
ЗЫ можно еще так делать
((CheckBox)fm2.Controls.Find("checkBox1", true)[0]).Checked = true;

ЗЗЫ если можно избежать обращение к компонентам другой формы, лучше избежать :)


 
anton773 ©   (2006-12-17 18:24) [11]


> Eraser ©  

Спасибо за ответ.!


 
Eraser ©   (2006-12-18 00:23) [12]

вот еще кое-что накопал (сейчас как раз разбираюсь с C#).

у компонентов есть такое свойство Modifiers, которое собственно и определет модификатор доступа. можно поставить internal или public, чтобы поведение было такое же как в Делфи. По-сути это свойство - просто визуальное представление действия в [7].


 
anton773 ©   (2006-12-18 04:17) [13]

А что означает свойства family ,assembly?



Страницы: 1 вся ветка

Текущий архив: 2007.01.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
10-1127743909
yanker
2005-09-26 18:11
2007.01.07
Управление существующим сервером


4-1156701339
AlexKRAM
2006-08-27 21:55
2007.01.07
Программно добавить пользователя Windows


1-1163613648
001
2006-11-15 21:00
2007.01.07
Диалог выбора каталога


15-1166449620
VitV
2006-12-18 16:47
2007.01.07
Задание


2-1166356390
VadimSpb
2006-12-17 14:53
2007.01.07
Определение ID последней записи