C#.NET

  • Креатор на темата Креатор на темата back_rest
  • Време на започнување Време на започнување
Поздрав до сите .NET девелопери.mkdot.net е интересна веб страна на која може да се најде се и сешто за .NET и други информации поврзани со тоа.

Да, дечките од mkdot.net се одлично организирани и имаат месечни средби со презентации од каде може многу да се научи. Викендов организираа и конференција (Code Camp 2009) со одлични предавања. Очекувам деновиве да се појават и презентациите со кодот за download
 
Зошто ? :)

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

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


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

frm1.lblUser.Text = this.txtUser.Text;

Друго решение ?
 
skrstevsky

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

Имам форма 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;
        }
 
Можеш и вака без класа:

Код:
// Ова претежно се користи во услови
// Нешто како... „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;
        }

Не ми врши работа форма да отворам, работам само со една фрома но имам код во други класи . . . ок фала средив.
 
Зошто ? :)

Имам форма 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;
     }
}
 
Да не те цитирам долг пост, пробав со статички променливи на тој начин и не знам зошто не работеше, нема грешка не кажува ништо при дебагирање, променливата ја носи вредноста со себе само во текст боксот не испишува . . .
 
Нормално дека не се испишува. Ова решениево со статичниве променливи нема врска.
Како прво не се препорашува од надвор да се менува било што во форма дирекно.
Се од формата се е private. Во класата од каде сакаш да го смениш текст боксот, дефинираш евент кој ќе се повикува на местото каде сакаш да го менуваш текст бокот. Кога го повикуваш, како аргумент го даваш стрингот.
Е сега, од формата се регистираш на тој евент, и во event Hаndler методот (тој е методот кој ќе го регитрираш на евентот) ќе го пишеш кодот кој го менува текстот на текст боксот.
 
Момци, бидејки немам на располагање никаков принтер неможам на раат да правам експерименти за да дојдам до она што ми треба. Значи имам DataGridView која што се почни со одредени податоци... е сега треба да има опција внесените податоци да можат да се испринтаат, но проблемот ми е тоа што нема одредено колку реда на крај ќе има DataGridView-от. Може да има 5, може да има 50... проблемот ми е тоа што неможам никако да го подесам принтањето. Доколку би знаел точен број на редови и колони така можам да го средам проблемот, но кога редовите не ми се фиксни незнам како да го направам подесувањето... и како што кажав немам на располагање принтер за да правам експерименти па ако има некој што би знаел да ми помогне му благодарам однапред :smir:

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

П.С. И дали има врска каков е принтерот ?

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

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

http://www.c-sharpcorner.com/Upload...838AM/HowToPrintaDataGridinCsHARPand.NET.aspx

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

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

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

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

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

http://www.c-sharpcorner.com/Upload...838AM/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:
 
Кај „Properties“ треба да имаш и еден дел „Signals“, таму треба да ги имаш настаните и да имаш опција „Click here to add signal“ (или така нешто беше) и одкако ќе додадеш настан во MainWindow би требало да имаш код за тој настан (ако добро ме држи сеќавањето) :toe:

Го решив тоа, туку кажуваj кодот напишан под линукс сакам да направам ехе во виндовс. :)
 
Имаш моно за windows. Или пак можеш да го отвориш кодот во Visual studio, и да го компајлираш. Направи нов проект во VS, таму каде е проектот ископирај го кодот, во Solution Explorer кликни на Show All Files, и десен клик на датотеките, и Include In Project. Јазикот е ист, библиотеката иста, па треба да работи ова.
Ако си пишувал во GTK#, тогаш немоши да работи со оваа фината од Моно во ВС. Ќе мораш со Моно за Виндоус
 
Имам база на податоци со две табели кои имаат примарни клучеви и така натаму . . .
Ја дебагирам програмата внесувам во база податоци и ги читам и се е ок. Ако исклучам Visual Studio податоците ги нема или ако отидам десен клик на табелата и Show Table Datа не покажува дека нешто има во база.

???

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

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

Kajgana Shop

Back
На врв Bottom