[C#]Dziswny blad i nie dzialajace zdarzenia na kontrolkach

0

Witam w C# raczkuje zrobilem sobie nowy projekt, form juz mam zrobiony tak jak chce wiec proboje:

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private CheckBox check1;
        private RadioButton radio1;
        private RadioButton radio2;
        private Button button;
        private TextBox text;

        private void Init() 
        {
        
            this.check1 = new CheckBox();
            this.radio1 = new RadioButton();
            this.radio2 = new RadioButton();
            this.button = new Button();
            this.text = new TextBox();

        }


        public Form1()
        {
            InitializeComponent();
            this.Init();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.button.Text = "qwerty";
        }
    }
}

wciskam f5 i jak klikam na button nic sie nie zmienia, czy ktos moze wytlumaczyc o co chodzi?potem juz mysle bedzie z gorki ;)
I dlaczego dodaje mi do projektu linq?

0

A masz przypisaną metodę button1_Click do zdarzenia button.Click?
Tak w ogóle to po co definiujesz kontrolki sam, a nie w designerze?

0

Dobrze jest też po zmianie elementów wizualnych formatki wywołać dla danego obiektu metodę Refresh (Repaint? nie pamiętam, ale jedno z tych).
Samo ci Linq dodaje? A jaki typ projektu wybrałeś? Z resztą nie ma problemu, możesz sobie po prostu wykasować tą linijkę i tyle.

0

ze moge wykasowac linijke to ja wiem projekt to zwykly win forms jednak nie uzywam zadnej kontrolki ktora by potrzebowala linq'a...dlatego pytam...

A masz przypisaną metodę button1_Click do zdarzenia button.Click?
Tak w ogóle to po co definiujesz kontrolki sam, a nie w designerze? 

tak metoda jest przypisana...moze jest jakis prosty sposob na sprawdzenie czy event dziala, moze jakis messagebox czy cos?
No zrobilem recznie bo po dodaniu kontrolek na forme vs nie wygenerowal mi ich instancji, moze robie cos zle?

0

Po dodaniu buttona na formie kliknij w niego dwa razy - wygeneruje ci event dla clicka.

moze jest jakis prosty sposob na sprawdzenie czy event dziala, moze jakis messagebox czy cos?

A może debugger? oO

0
aurel napisał(a)

Po dodaniu buttona na formie kliknij w niego dwa razy - wygeneruje ci event dla clicka.

moze jest jakis prosty sposob na sprawdzenie czy event dziala, moze jakis messagebox czy cos?

A może debugger? oO

przeciez mowie ze zdarzenie jest, i jest ono przypisane do buttona.
a po wlaczeniu debuggera f5 nie mam zadnych bledow a text na buttonie sie nie zmienia

0

Skoro raczkujesz, to pewnie nie dodałeś tych kontrolek do kolekcji Controls głównej formy.

Dodaj parę kontrolek w designerze, a następnie kliknij prawym na wywoływaną w konstruktorze metodę InitializeComponent(); i wybierz Go To Definition. Zobaczysz wtedy wygenerowany kod, który dodaje kontrolki do formy i będziesz wiedział co trzeba zrobić, aby manualnie zrobić to samemu.

0
marcio napisał(a)
aurel napisał(a)

moze jest jakis prosty sposob na sprawdzenie czy event dziala, moze jakis messagebox czy cos?

A może debugger? oO

przeciez mowie ze zdarzenie jest, i jest ono przypisane do buttona.
a po wlaczeniu debuggera f5 nie mam zadnych bledow a text na buttonie sie nie zmienia

Pytałeś jak sprawdzić, czy event działa. Jeśli ustawiasz breakpoint wewnątrz funkcji button1_Click, odpalasz F5, klikasz button i zatrzymujesz się na breakpoincie - znaczy, że event działa. Jeśli nie ma błędów, ale i nie zatrzymujesz się na breakpoincie, to event nie działa.

0
marcio napisał(a)

ze moge wykasowac linijke to ja wiem projekt to zwykly win forms jednak nie uzywam zadnej kontrolki ktora by potrzebowala linq'a...dlatego pytam...

Kilka usingów dodawanych jest standardowo przez VS do każdego pliku z kodem. Najprostszy sposób, żeby się ich pozbyć, to kliknąć PPM w edytorze -> Organize Usings -> Remove and Sort.

tak metoda jest przypisana...

To pokaż kod, którym przypisałeś tę metodę. ;]

No zrobilem recznie bo po dodaniu kontrolek na forme vs nie wygenerowal mi ich instancji, moze robie cos zle?

Powinieneś natychmiast zagrać w totolotka z takim szczęściem ;]
Jak sprawdziłeś, że designer nie wygenerował kontrolek? Na 99,9% opowiadasz bzdury. Pewno wydaje Ci się, że nie wygenerował, bo nie zobaczyłeś ich w pliku Form1.cs, podczas gdy wszystko co generuje designer jest w Form1.Designer.cs.

Heko napisał(a)

Skoro raczkujesz, to pewnie nie dodałeś tych kontrolek do kolekcji Controls głównej formy.

Ale on tego nie musi robić, to robi designer.

0

Ok juz wszystko wporzo dokoncze program i napisze...
ogolnie troche to jest przekombinowane w delphi bylo to praktyczniejsze, w C# mamy to podzielone na kilka plikow w tym lezal problem

0
marcio napisał(a)

w delphi bylo to praktyczniejsze, w C# mamy to podzielone na kilka plikow w tym lezal problem

ROTFL.
I to jest właśnie praktyczniejsze, że miliony linijek kodu ustawiające przyciski na formularzu i realizujące inne tego typu pierdoły, nie zajmują niepotrzebnie miejsca w pliku z kodem programisty. ;] Twórca Delphi chyba też tak uważa, skoro projektując C# dopuścił istnienie klas w wielu plikach.
Przeciągasz kontrolkę w designerze na formę, ewentualnie ustawiasz jej właściwości i masz ją dostępną, w kodzie odwołujesz się przez jej nazwę. Po co Ci przejmować się tym, gdzie jest jej deklaracja?

0

np po to zeby zrozumiec jak to wszystko dziala nie mam ochoty tylko klepac kod bez rozumienia jak dziala platforma .NET

0

hmm wie moze ktos jak mam podac path do StreamWriter gdy podaje : "C:\plik.txt" to jest blad z escape'owaniem znaku \ jak dam "C:\plik.txt" to tez nie dziala i wywala ze nie prawidlowa sciezka, a dodanie @ na poczatku tez nic nie daje...

0

sry juz dziala ;) jednak nie wiem zabardzo jak ustawic kodowanie pliku czy cos zeby byly polskie znaki..

0

WItam ponownie, juz powoli sobie radze a pisanie w vs+.NET+C# to sama przyjemnosc...
nie wiem dlaczego ale po ustawieniu kodowania pliku nie chce dzialac, a wczesniej dzialalo tylko ze bez polskich znakow...
mam taki dziwny blad:

The process cannot access the file 'C:\hacking.txt' because it is being used by another process.

Nie mam pojecia co on ma wspolnego z kodem bo zadna inna aplikacja aktualnie nie korzysta z tego pliku chyba ze chodzi o cos innego...

System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(1252);
StreamWriter file = new StreamWriter(this.txtPath, true, encoding); //tu daje ze jest wlasnie ten blad

wczesniej wywolanie kontruktora klasy streamwriter tylko ze sciezka do pliku dzialalo po dodaniu tego fragmentu powstal taki blad...jak go rozwiazac?

0
marcio napisał(a)

np po to zeby zrozumiec jak to wszystko dziala nie mam ochoty tylko klepac kod bez rozumienia jak dziala platforma .NET

I po to potrzebujesz deklaracji kontrolek w jednym pliku?
Od tego są książki i dokumentacja. :)

marcio napisał(a)

The process cannot access the file 'C:\hacking.txt' because it is being used by another process.

Nie mam pojecia co on ma wspolnego z kodem bo zadna inna aplikacja aktualnie nie korzysta z tego pliku chyba ze chodzi o cos innego...

Bo tu raczej nie chodzi o inną aplikację, tylko o Twoją. Pewno sam nie zamykasz pliku po użyciu go. Sprawdź.

0

I po to potrzebujesz deklaracji kontrolek w jednym pliku?
Od tego są książki i dokumentacja. :)

Nie zrozumiales sarkazmu nvm...

Bo tu raczej nie chodzi o inną aplikację, tylko o Twoją. Pewno sam nie zamykasz pliku po użyciu go. Sprawdź.

Hmm moze ja czegos nie kumam i polityka C# jest inna niz php czy python'a ale:

        private void button1_Click(object sender, EventArgs e)
        {
            string source = this.client.DownloadString(this.url);

            if (this.checkBox1.Checked)
            {
                this.textBox1.Text = source;
            }

            if (this.radioButton2.Checked)
            {
                if(File.Exists(this.txtPath))
                    File.Delete(this.txtPath);

                if(!File.Exists(this.txtPath))
                {
                    if (File.CreateText(this.txtPath))
                    {

                        System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(1252);
                        StreamWriter file = new StreamWriter(this.txtPath, true, encoding);
                        file.WriteLine(source);
                        file.Close();

                    }
                }
            }
        }

Jest tu cos co mogloby wskazywac na ten blad?

1

wywal File.CreateText(), bo to ci jednocześnie otwiera też plik - i zwraca StreamWritera. Jest więc w zasadzie tym samym co new StreamWriter.

1 użytkowników online, w tym zalogowanych: 0, gości: 1