PDA

View Full Version : C# ic harc


Երեխա
Jul 17, 2007, 18:14
Zoxovurd uxexs cakvav mi ban sxal em anum ha errora tali

uremn xndirs dasakana

ka MDI application.

MainForm u mek el ChildForm

uzum em ChildForm pakveluc xabar ani MaiNForm in vor pakvela

Dra hamar delegat,event u argument er em haytararum ChildForm i class um senc

publicclassUserRequestEventArgs : EventArgs
{
publicstring Message;
public UserRequestEventArgs(string s)
{
Message = s;
}
}
publicdelegatevoidUserRequest(object sender, UserRequestEventArgs e);
publiceventEventHandler<UserRequestEventArgs> OnUserRequest;


heto ed nuyn CHildForm i classum grum em vor pakveluc

...
if (OnUserRequest != null)
{
UserRequestEventArgs mtcea =
newUserRequestEventArgs("Message from OnOneSecond");
erRequest(sender, mtcea);
}
this.Close();
...

u mek el MAIN FORM i classum

frm.OnUserRequest += newfrmMain.UserRequest();


u mek el asum em ed nuyn MAINFROM um vor

privatevoid UserReq(object sender, UserRequestEventArgs e)
{
MessageBox.Show( e.Message.ToString());
}

vortex frm ed childform i arden stexcac instance a, isk frmMain el MAIN FORMNA

inchna ste sxal zoxovurd???

compile chi linum

xndrum em es xndir asxhatacneq motnerd henc stacvi (henc CHILD formen pakes main forum MessageBox.SHow lini) aseq grem tesnem.

Երեխա
Jul 18, 2007, 15:55
ste C# imacox chka vor uzena indz ogni ?

Michellangelo
Aug 2, 2007, 17:21
I think in MainForm you should add your event hadler in this way:

frm.OnUserRequest += new UserRequest(frmMain.UserReq);

Agregat
Aug 3, 2007, 07:23
frm.OnUserRequest += new UserRequest(frmMain.UserReq);
или если .NET2.0 или старше просто += frmMain.UserReq.

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

Երեխա
Aug 3, 2007, 13:54
zzvum em es anasun C sharp ic :D C++ ov u Windows messaging ov hastat aveli hamar er, ste dllimport ban man eeheeee

Agregat
Aug 3, 2007, 14:09
Уфффф....

TigrOm
Aug 17, 2007, 12:53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
}
}
}



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class MDIForm : Form
{

ChildForm chilForm = new ChildForm();
public MDIForm()
{
InitializeComponent();
chilForm.Show(this);
chilForm.FormClosed += new FormClosedEventHandler(OnFormClosed);
}

private void OnFormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show(e.CloseReason.ToString());
}
}
}


Но ИМХО есть технологии которые избавят от написания такого кода. Smart Client Software Factory (CAB) и подобные...