Pass Variables between Windows Forms Windows without ShowDialog() Пасс вариаблес између Уиндоус Уиндоус Обрасци без СхоуДиалог ()
When you are programming a Windows Forms application, you will invariably need to get variables from a second form window, such as an options form or popup search prompt. Када се програм Уиндоус Формс, ви ћете неизбежно морати да се променљиве из другог облика прозора, као што су форму или падајући опција претраге линији.
Most of the guides out there will tell you that you have to open the second form with ShowDialog(), which blocks the user from doing anything else until they've closed the second form window. Већина водичи тамо ће вам рећи да сте да отворите другу форму са СхоуДиалог (), који блокира кориснику радиш било шта друго све док не буду затворене Други облик прозора. This won't work very well for a find/replace dialog, for instance. Ово неће радити добро за проналажење / Реплаце Диалог, на пример. It also won't work very well for custom drawn popup forms. Такође се неће радити врло добро прилагођени искачући прозор извучени форме.
The quick way to pass variables between the forms is using Delegates. Брз начин да се прође између променљивих облика користи делегата. You can set an eventhandler for the Closing event of the second form, and handle the event in the first form. Можете да подесите евентхандлер за затварања манифестације у другом облику, и регулатор догађај у првом разреду. This allows you to capture variables before the second form window has closed. Ово вам омогућава да ухватите променљиве пред Други облик је прозор затворен.
For this exercise, we're going to assume that we have two forms: За ову вежбу, идемо да претпоставимо да имамо два облика:
MainForm МаинФорм
OptionsForm ОптионсФорм
We're going to further assume that we've clicked some sort of button that opens the OptionsForm with a Show() method call. Идемо даље претпоставити да смо кликнули на неки тастер да се отвара са ОптионсФорм Прикажи () позива метод. Now let's take a look at the magic: Сада погледајмо на магију:
……. ... .... snip……. несташко ... ....
OptionsForm theform = new OptionsForm(); ОптионсФорм тхеформ = нови ОптионсФорм ();
theform.Closing += new CancelEventHandler(theform_Closing); тхеформ.Цлосинг + = нови ЦанцелЕвентХандлер (тхеформ_Цлосинг);
theform.Show(); тхеформ.Схоу ();} )
private void theform_Closing(object sender, CancelEventArgs e) приватна празнину тхеформ_Цлосинг (Објецт сендер, ЦанцелЕвентАргс д)
{ (OptionsForm theform = (OptionsForm)sender; ОптионсФорм тхеформ = (ОптионсФорм) пошиљаоца;
// Grab the variable from the options form. / / Узми променљиву из обрасца опција. The options form should set this variable before it closes, and the variable should be marked as public. Опције обрасца треба поставити променљиву пре него што се затвара, а променљива треба да буде означена као јавно.
string localvar = theform.thestringvariable; ниска лоцалвар = тхеформ.тхестрингвариабле;} )
That's all there is to it. То је све што је на њега.

Daily Email Updates Дневни Е-маил Обнове
You can get our how-to articles in your inbox each day for free. Можете добити наше чланке у инбокс-у сваког дана бесплатно. Just enter your name and email below: Једноставно унесите ваше име и емаил адресу испод:



I guess this works better : Ваљда ово ради боље:
theform.FormClosing += new FormClosingEventHandler(theform_Closing); тхеформ.ФормЦлосинг + = нови ФормЦлосингЕвентХандлер (тхеформ_Цлосинг);
Thanks it helped me a lot to figure it out anyway. Хвала то ми је много помогао да то схватим свеједно.
it worked for me as well in great deal она је за мене као и на велику
A big thanks for the person who has given the hint Велико хвала за лице које је дао наговештај