Главная страница
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.037 c
2-1166208053
FIL-23
2006-12-15 21:40
2007.01.07
как вставить строку в memo


2-1166518893
Slimer
2006-12-19 12:01
2007.01.07
Добавление в ячейку данных из TMemo


2-1166381023
allrussia
2006-12-17 21:43
2007.01.07
Как и можно ли создать таблицу в таблице?


3-1161444236
dj0n
2006-10-21 19:23
2007.01.07
как в DBImage заставить понимать jpg?


1-1163593901
Чапаев
2006-11-15 15:31
2007.01.07
ListView, ViewStyle=vsReport