C#.NET

Член од
14 јуни 2009
Мислења
1
Поени од реакции
0
Поздрав до сите .NET девелопери.mkdot.net е интересна веб страна на која може да се најде се и сешто за .NET и други информации поврзани со тоа.
Да, дечките од mkdot.net се одлично организирани и имаат месечни средби со презентации од каде може многу да се научи. Викендов организираа и конференција (Code Camp 2009) со одлични предавања. Очекувам деновиве да се појават и презентациите со кодот за download
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Зошто ? :)

Имам форма frmMain со еден текст бокс, правам друга класа со која сакам да пристапам до текст боксот на формата frmMain. Текст боксот го ставив да биде public а не private не сака. Направив да се повика метод во frmMain кој ќе испиште нешто во текст боксот пак ништо.

Зошто ли зошто :) ?


Edit: Решено:
Код:
Form1  frm1 = (Form1)Application.OpenForms["Form1"];

frm1.lblUser.Text = this.txtUser.Text;
Друго решение ?
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
skrstevsky

Во твоето решение ти го правиш полето (field variable) јавно (public), а е препорачливо сите полиња да се чуваат приватни. Оти ако е јавна можеш да направиш нешто вакво
Код:
frm1.lblUser = null; // вака се срушува некој програм
Мошеж да го откриеш објектот од таа променлива со Property и тоа само со get.
Во Form1 ставаш нешто вакво
Код:
 public Label LblUser
{
   get { return this.lblUser; }
}
Нешто настрана. Моја претпоставка е дека нешто се случува настрана во некој код и сакаш да го известиш крајниот корисник што се случува со ставање на некоја порака во Label-от од Form1. Многу подобро решение е со користење на евенти... Сепак, ова е претпоставка, не знам како ти рабито апликацијата.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Зошто ? :)

Имам форма frmMain со еден текст бокс, правам друга класа со која сакам да пристапам до текст боксот на формата frmMain. Текст боксот го ставив да биде public а не private не сака. Направив да се повика метод во frmMain кој ќе испиште нешто во текст боксот пак ништо.

Зошто ли зошто :) ?


Edit: Решено:
Код:
Form1  frm1 = (Form1)Application.OpenForms["Form1"];

frm1.lblUser.Text = this.txtUser.Text;
Друго решение ?
Можеш и вака без класа:

Код:
// Ова претежно се користи во услови
// Нешто како... „OnPressButton1“

                string title = textBox.Text;

                Form2 form2 = new Form2();
                form2.title = title;
                form2.Show();

// И после во новата форма ќе ставиш еден textBox и во onLoad ќе ja декларираш вредноста на тој текст бокс

private void Form2_Load(object sender, EventArgs e)
        {
            
            txtName.Text = title;
        }
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Можеш и вака без класа:

Код:
// Ова претежно се користи во услови
// Нешто како... „OnPressButton1“

                string title = textBox.Text;

                Form2 form2 = new Form2();
                form2.title = title;
                form2.Show();

// И после во новата форма ќе ставиш еден textBox и во onLoad ќе ja декларираш вредноста на тој текст бокс

private void Form2_Load(object sender, EventArgs e)
        {
            
            txtName.Text = title;
        }
Не ми врши работа форма да отворам, работам само со една фрома но имам код во други класи . . . ок фала средив.
 
Член од
1 февруари 2007
Мислења
57
Поени од реакции
1
Зошто ? :)

Имам форма frmMain со еден текст бокс, правам друга класа со која сакам да пристапам до текст боксот на формата frmMain. Текст боксот го ставив да биде public а не private не сака. Направив да се повика метод во frmMain кој ќе испиште нешто во текст боксот пак ништо.

Зошто ли зошто :) ?


Edit: Решено:
Код:
Form1  frm1 = (Form1)Application.OpenForms["Form1"];

frm1.lblUser.Text = this.txtUser.Text;
Друго решение ?
Бидејки работиш WinForms можеш да користш и static променливи. Некоја стринг променлива во Form1 која ќе ти биде static. На таа променлива можеш да и пристапиш дирекно од која друга било класа пример:

Код:
public partial class Form1: Form
{
     public static string TextVrednost = string.empty;
    
     public Form1()
     {

     }
}
Pristapot do taa promenliva e na sledniot kod:

Код:
public partial class Form2: Form
{
    
     public Form2()
     {
         txtTextBox.Text = Form1.TextVrednost;
     }
}
ili pak dokolku sakas tamu da dodelis vrednost
Код:
public partial class Form2: Form
{
    
     public Form2()
     {
         Form1.TextVrednost = txtTextBox.Text;
     }
}
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Да не те цитирам долг пост, пробав со статички променливи на тој начин и не знам зошто не работеше, нема грешка не кажува ништо при дебагирање, променливата ја носи вредноста со себе само во текст боксот не испишува . . .
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Нормално дека не се испишува. Ова решениево со статичниве променливи нема врска.
Како прво не се препорашува од надвор да се менува било што во форма дирекно.
Се од формата се е private. Во класата од каде сакаш да го смениш текст боксот, дефинираш евент кој ќе се повикува на местото каде сакаш да го менуваш текст бокот. Кога го повикуваш, како аргумент го даваш стрингот.
Е сега, од формата се регистираш на тој евент, и во event Hаndler методот (тој е методот кој ќе го регитрираш на евентот) ќе го пишеш кодот кој го менува текстот на текст боксот.
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Момци, бидејки немам на располагање никаков принтер неможам на раат да правам експерименти за да дојдам до она што ми треба. Значи имам DataGridView која што се почни со одредени податоци... е сега треба да има опција внесените податоци да можат да се испринтаат, но проблемот ми е тоа што нема одредено колку реда на крај ќе има DataGridView-от. Може да има 5, може да има 50... проблемот ми е тоа што неможам никако да го подесам принтањето. Доколку би знаел точен број на редови и колони така можам да го средам проблемот, но кога редовите не ми се фиксни незнам како да го направам подесувањето... и како што кажав немам на располагање принтер за да правам експерименти па ако има некој што би знаел да ми помогне му благодарам однапред :smir:

П.С. И дали има врска каков е принтерот ?
 
Член од
15 мај 2008
Мислења
947
Поени од реакции
99
Момци, бидејки немам на располагање никаков принтер неможам на раат да правам експерименти за да дојдам до она што ми треба. Значи имам DataGridView која што се почни со одредени податоци... е сега треба да има опција внесените податоци да можат да се испринтаат, но проблемот ми е тоа што нема одредено колку реда на крај ќе има DataGridView-от. Може да има 5, може да има 50... проблемот ми е тоа што неможам никако да го подесам принтањето. Доколку би знаел точен број на редови и колони така можам да го средам проблемот, но кога редовите не ми се фиксни незнам како да го направам подесувањето... и како што кажав немам на располагање принтер за да правам експерименти па ако има некој што би знаел да ми помогне му благодарам однапред :smir:

П.С. И дали има врска каков е принтерот ?
Пробај со овие примери, на едниот имаш и готова програма со source код:

http://msdn.microsoft.com/en-us/library/aa287528(VS.71).aspx

http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintaDataGridinCsHARPand.NET11212005060838AM/HowToPrintaDataGridinCsHARPand.NET.aspx

Јас правев печатење на фактури од ПДА преку bluetooth на матричен печатар Epson LX-300, за кој што треба да ги знаеш escape секвенците, и одвај се снајдов со многу проби и некако преку методот на залудни покушаи :) дојдов до решението.

Горниве примери ти се веројатно за ласерски печатар, различно е од тоа што го имам работено и не можам повеќе да ти помогнам. Но важно е да си набавиш принтер за проба, иначе нема да знаеш дали ти работи кодот.
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Прашање за Mono. Го инсталирав и ставам едно копче и сакам настан притиснато копче. Во visual studio е со двоен клик и сам генерира код овде има такво нешто или рачно да пишувам ?

Се снајдов :) view>properties> па клик ваму клик таму ....

Друго: да направам ехе за виндовс а кодот е пишувам во линукс ?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Пробај со овие примери, на едниот имаш и готова програма со source код:

http://msdn.microsoft.com/en-us/library/aa287528(VS.71).aspx

http://www.c-sharpcorner.com/UploadFile/mgold/HowToPrintaDataGridinCsHARPand.NET11212005060838AM/HowToPrintaDataGridinCsHARPand.NET.aspx

Јас правев печатење на фактури од ПДА преку bluetooth на матричен печатар Epson LX-300, за кој што треба да ги знаеш escape секвенците, и одвај се снајдов со многу проби и некако преку методот на залудни покушаи :) дојдов до решението.

Горниве примери ти се веројатно за ласерски печатар, различно е од тоа што го имам работено и не можам повеќе да ти помогнам. Но важно е да си набавиш принтер за проба, иначе нема да знаеш дали ти работи кодот.
Изгледа додека сум без принтер ќе треба да се задоволам со вакво решение

Код:
            printDocument.DefaultPageSettings.Margins =
                new System.Drawing.Printing.Margins(40, 40, 40, 40);

            printProvider = PrintingDataGridViewProvider.Create(
                printDocument, GridView,
                new TitlePrintBlock()
                {
                    ForeColor = Color.DarkBlue,
                    Title = printDocument.DocumentName
                },
                new PrintBlocks.HeaderPrintBlock(),
                new PrintBlocks.FooterPrintBlock());
И после во дугмето „Принтај“ најпрвин да ставам да го селектира цел DataGridView па после со print() методот да го испринта само селектираното (а селектираното е всушност цел DataGridView). Толку можем да извадам максимум без принтер :)

Во секој случај благодарам за помошта :smir:

Прашање за Mono. Го инсталирав и ставам едно копче и сакам настан притиснато копче. Во visual studio е со двоен клик и сам генерира код овде има такво нешто или рачно да пишувам ?
Кај „Properties“ треба да имаш и еден дел „Signals“, таму треба да ги имаш настаните и да имаш опција „Click here to add signal“ (или така нешто беше) и одкако ќе додадеш настан во MainWindow би требало да имаш код за тој настан (ако добро ме држи сеќавањето) :toe:
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Кај „Properties“ треба да имаш и еден дел „Signals“, таму треба да ги имаш настаните и да имаш опција „Click here to add signal“ (или така нешто беше) и одкако ќе додадеш настан во MainWindow би требало да имаш код за тој настан (ако добро ме држи сеќавањето) :toe:
Го решив тоа, туку кажуваj кодот напишан под линукс сакам да направам ехе во виндовс. :)
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Имаш моно за windows. Или пак можеш да го отвориш кодот во Visual studio, и да го компајлираш. Направи нов проект во VS, таму каде е проектот ископирај го кодот, во Solution Explorer кликни на Show All Files, и десен клик на датотеките, и Include In Project. Јазикот е ист, библиотеката иста, па треба да работи ова.
Ако си пишувал во GTK#, тогаш немоши да работи со оваа фината од Моно во ВС. Ќе мораш со Моно за Виндоус
 
Член од
24 август 2007
Мислења
761
Поени од реакции
15
Имам база на податоци со две табели кои имаат примарни клучеви и така натаму . . .
Ја дебагирам програмата внесувам во база податоци и ги читам и се е ок. Ако исклучам Visual Studio податоците ги нема или ако отидам десен клик на табелата и Show Table Datа не покажува дека нешто има во база.

???

Edit: Во VS е така, ако го стартувам ехе-то е ок работи.

Проблемот со Show Table Data не е решен ?
 

Kajgana Shop

На врв Bottom