Skocz do zawartości



Problem z C#


  • Nie możesz odpowiedzieć
6 odpowiedzi w tym temacie

#1 Al@n

    Magisterek

  • Absolwent
  • PipPipPipPipPipPipPip
  • 380 postów
  • NazwiskoLipiński
  • ImięAlan
  • Rocznik2008
  • Grupa ATHT

Napisano 02 grudzień 2010, 23:02

Witam, proszę o pomoc w tym chyba prostym, elemenarnym problemie.

Mam prosty program (Serwer) , który ma na głównej formie przycisk "settings" otwierający nowe okienko z ustawieniami o nazwie "ustawienia"... (i to oczywiście działa)
Do tego okna przeniosłem textboxa gdzie wpisuje się pewną wartość liczbową (konkretnei numer portu).
Chciałbym by wpisany w oknie ustawień numer portu był wykorzystywany w głownej formie aplikacji (Serwer).

W kodzie aplikacji głównej (Serwer) był taki oto fragment kodu (był gdy textbox 'txtPort' był na formie Serwer a nie jak teraz na formie ustawień):

Cytat

wyswietl(txtLog, "Czekam na połaczenie\n");
listener = new TcpListener(int.Parse(this.txtPort.Text));
listener.Start();

Tu do texboxa odwoływałem się po prostu przez "this. (..)"

Jednak teraz chciałbym by ta wartośc była pobierana z pola txtPort z okna settings!
Więc co robie? zaraz po utworzeniu głównego okna serwera tworzę (i nie pokazuję) okna settings...

Cytat

public frmSerwer()
{
InitializeComponent();
Ustawienia settings = new Ustawienia();

Jednak gdy próbuję w jakikolwiek sposób zmodyfikować progam na np.

Cytat

wyswietl(txtLog, "Czekam na połaczenie\n");
listener = new TcpListener(int.Parse(settings.txtPort.Text));
listener.Start();

To oczywiście nie działa, bo robię to źle. Sęk w tym że nieumiem tego ( :D ) zrobić dobrze! :|
Więc dla tych co nie czytali całego posta tylko zjechali od razu tu:
Jak pobrać wartość zmiennej z pola na innej formie do "bieżącej" formy? Pozdro ;]
Tworzenie stron www Bielsko-Biała: Strony WWW Bielsko

#2 Doli

    Początkujący

  • Student2008
  • Pip
  • 55 postów
  • NazwiskoLoranc
  • ImięDawid
  • Rocznik2008
  • Grupa ATH3b

Napisano 02 grudzień 2010, 23:34

Kontrolki, do których chcesz mieć dostęp z innej formy powinny być publiczne. Znajdź deklarację tego TextBoxa i ustaw mu dostęp na public. Powinno zadziałać.

#3 Al@n

    Magisterek

  • Absolwent
  • PipPipPipPipPipPipPip
  • 380 postów
  • NazwiskoLipiński
  • ImięAlan
  • Rocznik2008
  • Grupa ATHT

Napisano 02 grudzień 2010, 23:42

Wydaje mi sie ze juz jest lepiej, ale wywala błąd:

Cytat

Error 1 'System.Windows.Forms.Button' does not contain a definition for 'txtPort'

kod zmieniam na taki:

Cytat

wyswietl(txtLog, "Czekam na połaczenie\n");
listener = new TcpListener(int.Parse(settings.txtPort.Text));
listener.Start();

i wydaje mi się że w pogrubionym fragmencie jest zły zapis :(
Tworzenie stron www Bielsko-Biała: Strony WWW Bielsko

#4 Doli

    Początkujący

  • Student2008
  • Pip
  • 55 postów
  • NazwiskoLoranc
  • ImięDawid
  • Rocznik2008
  • Grupa ATH3b

Napisano 03 grudzień 2010, 00:07

Dziwne, wypisuje ci, że na tej drugiej formie, z której pobierasz dane nie ma tej kontrolki. Na pewno "txtPort" to dobra nazwa? Nie rozumiem co znaczy to "System.Windows.Forms.Button". To "settings" to na pewno ta druga forma? Bo z błędu wynika, że to przycisk, tak to przynajmniej rozumiem.

#5 dela

    Początkujący

  • Student2008
  • Pip
  • 69 postów
  • NazwiskoGębczyński
  • ImięGrzegorz
  • Rocznik2008
  • Grupa ATHT

Napisano 03 grudzień 2010, 00:12

Cytat

public frmSerwer()
{
InitializeComponent();
Ustawienia settings = new Ustawienia();

To trzeba zmienić. Pisząc w ten sposób settings to lokalny obiekt, który ulega zniszczeniu po zakończeniu konstruktora. Trzeba go stworzyć jako pole formularza serwer, czyli mniej wiecej tak:

    public partial class frmSerwer : Form
    {
        private Ustawienia settings;

        public frmSerwer()
        {
            InitializeComponent();
            settings = new Ustawienia();
        }
...

no i zgodnie z tym co napisał Doli, w pliku Ustawienia.Designer.cs powinno być:
public System.Windows.Forms.TextBox txtPort;


#6 Al@n

    Magisterek

  • Absolwent
  • PipPipPipPipPipPipPip
  • 380 postów
  • NazwiskoLipiński
  • ImięAlan
  • Rocznik2008
  • Grupa ATHT

Napisano 03 grudzień 2010, 00:14

Dela miał rację właśnie dlatego obiekt nie mógł być używany bo po tworzeniu był "diposed"
Dzięki za zaangażowanie w nagrodę... cycki ! :D









Dołączona grafika
Tworzenie stron www Bielsko-Biała: Strony WWW Bielsko

#7 CZaCHa

    Profesorek

  • Moderator
  • PipPipPipPipPipPipPipPipPip
  • 603 postów
  • NazwiskoŁukasz
  • ImięKurzyniec
  • Rocznik2005
  • Grupa ATHBDiAS

Napisano 03 grudzień 2010, 19:55

Jeszcze jest coś takiego:
(Application.OpenForms["OpenGL_Form"] as OpenGL_Form).PlotGL(modeldata);

$(function () { alert('kurzyniec.pl'); });






Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych