2021-07-13T14:25:45+02:00
2021-07-14T21:26:50+02:00
2022-08-12T03:40:31+02:00
FRETENSIS
Sziasztok! Egy kis win formos alkalmazást készítek gyakorlás képen VS2019-ben! Azt szeretném elérni , hogy az első formos combox-ból index alapján lefusson egy másik dolog a hozzá rendelt Battle.cs formon! Az első formon beállítottam publicra a combobox controlját (propertynél: Modifies>>Public)! Az aktuális combobox-t elneveztem battlecruiser-nek és úgy tettem bele egy if elágazásba! Viszont futtatáskor csak az else ág fut le bármelyik indexű elemet is választom ki. De ebben az esetben azt szeretném elérni , hogy külön -külön messagebox jelenlen meg aszerint melyik indexű elemet választottam ki a comboboxban!
--------------------Battle.cs-----Második form amin kellene lefutnia a MessageBox-nak!----------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniverseOfWars
{
public partial class Battle : Form
{
public Battle()
{
InitializeComponent();
}
public void csataButton_Click(object sender, EventArgs e)
{
Form1 csata = new Form1();
if (csata.battlecruiser.SelectedIndex == 0)
{
MessageBox.Show("A csata elveszett: A megmarad csatacirkálók visszavonulnak a Braxis bolygó űrplatformjai felé!");
}
else
{
MessageBox.Show("Győzelem: Csapataink visszaverték az egyesített Protoss és Zerg csapatokat!");
}
}
}
}
--------------------Battle.cs-----Második form amin kellene lefutnia a MessageBox-nak!----------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniverseOfWars
{
public partial class Battle : Form
{
public Battle()
{
InitializeComponent();
}
public void csataButton_Click(object sender, EventArgs e)
{
Form1 csata = new Form1();
if (csata.battlecruiser.SelectedIndex == 0)
{
MessageBox.Show("A csata elveszett: A megmarad csatacirkálók visszavonulnak a Braxis bolygó űrplatformjai felé!");
}
else
{
MessageBox.Show("Győzelem: Csapataink visszaverték az egyesített Protoss és Zerg csapatokat!");
}
}
}
}
Mutasd a teljes hozzászólást!
Csatolt állomány
- UniverseOfWars.rar42,29 KB
Szia!
Kezdem kapiskálni mit is szeretnél. Az első, és legfontosabb - szerintem -, hogy egy Form vezérlőit (a controllokat) sosem tesszük Publikussá, az maradjon csak meg a form számára. Van/lehet olyan eset, amikor szükséges "kívülről" változtatni, arra is megvannak a módszerek. Ha csak az érték kell (mint jelen esetben neked), akkor egyszerűen egy változóban tovább küldjük.
Módosítottam a programodat, tanulmányozd egy kicsit, szerintem rá fogsz jönni.
Kezdem kapiskálni mit is szeretnél. Az első, és legfontosabb - szerintem -, hogy egy Form vezérlőit (a controllokat) sosem tesszük Publikussá, az maradjon csak meg a form számára. Van/lehet olyan eset, amikor szükséges "kívülről" változtatni, arra is megvannak a módszerek. Ha csak az érték kell (mint jelen esetben neked), akkor egyszerűen egy változóban tovább küldjük.
Módosítottam a programodat, tanulmányozd egy kicsit, szerintem rá fogsz jönni.
Mutasd a teljes hozzászólást!
Csatolt állomány
- UniverseOfWars_modified.zip49,14 KB
- Krisflyerválasza FRETENSIS (14:25) részére
- 2021.07.13. 20:16
- permalink
Szia!
Nem teljesen értem mit is szeretnél pontosan csinálni, de itt a probléma:
public void csataButton_Click(object sender, EventArgs e)
{
Form1 csata = new Form1();
if (csata.battlecruiser.SelectedIndex == 0)
A gomb lenyomására létrehozol egy új Form1-et, így a "battlecruiser" combó értéke -1 lesz, mert nincs kiválasztva semmi, ez miatt fut le mindig csak az "else" ág.
Hogy minél egyszerűbb legyen, én átadnám az eredeti Form1 combóinak az értékeit a Battle formnak, vagy a constructorban, vagy egy method-ban.Mutasd a teljes hozzászólást!- István Kövicsválasza FRETENSIS (14:25) részére
- 2021.07.14. 12:20
- permalink
Hol van így esélye a comboboxból kiválasztani valamit is a szergény usernek?
Hiszen mint írták, abban a pillanatban jön létre mikor megnyomják a gombot....
Nem kellene ennek a formnak már korábban léteznie?
Ha létezik nem kell szűzen újra létrehozni, hanem onnan kellene kiolvasni a már beállított combobox indexét.
Ha már van létező Form1 példány abból szedd ki az adatot, ne hozz létre új példányt.Mutasd a teljes hozzászólást!- FRETENSISválasza Krisflyer (20:16) részére
- 2021.07.14. 16:08
- permalink
Szia! Erre gondoltál?
Itt a Battle.cs-ben próbálom meghívni a a combobox indexeit! De végül is aláhúzza az if elágazásban a battlecruiser-t(a nevét a comboboxnak)! Publicra állítottam az összes comboxt!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniverseOfWars
{
public partial class Battle : Form
{
public Battle()
{
InitializeComponent();
}
public void csataButton_Click(object sender, EventArgs e)
{
if (battlecruiser.SelectedIndex == 0)
{
MessageBox.Show("A csata elveszett: A megmarad csatacirkálók visszavonulnak a Braxis bolygó űrplatformjai felé!");
}
else
{
MessageBox.Show("Győzelem: Csapataink visszaverték az egyesített Protoss és Zerg csapatokat!");
}
}
}
}
----------------------------------------És akkor így néz ki a Fő formom:-------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniverseOfWars
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Hide();
Battle FoForm = new Battle();
FoForm.ShowDialog();
}
public void battlecruiser_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}Mutasd a teljes hozzászólást!Csatolt állomány- UniverseOfWars.rar42,22 KB
- FRETENSISválasza FRETENSIS (16:08) részére
- 2021.07.14. 17:40
- permalink
Igazából tanulom és elnézést ha értetlen vagyok vagy nem teljesen tudok kérdezni! Igazából rájöttem kérdezni is meg kell tanulni ebben a szakmában! Tehát akkor felvázolom kicsit részletesebben.
Van egy (Form1) fő form ablak amiben ha combobox-ból kiválasztunk egy értéket akkor a második Battle.cs formon gombra le kellene futnia egy message boxnak az alapján amit a (Form1) fő form comboboxjából kiválasztott a user!
Az egyes comboxokat elneveztem a propertyben ami alapján szeretném elérni a Battle.cs-ben (második formból)! if elágazás alaján próbáltam kiválasztani a megfelelő indexet de aláhúzza :
Másfelől a propertyben átállítottam publicra a Modifies-nél is a comboboxokat!
if (Form1.battlecrusier.SelectedIndex == 0)
{
MessageBox.Show("A csata elveszett: A megmarad csatacirkálók visszavonulnak a Braxis bolygó űrplatformjai felé!");
}
else
{
MessageBox.Show("Győzelem: Csapataink visszaverték az egyesített Protoss és Zerg csapatokat!");
}Mutasd a teljes hozzászólást!Csatolt állomány- UniverseOfWars.rar42,22 KB
- Szia!
Kezdem kapiskálni mit is szeretnél. Az első, és legfontosabb - szerintem -, hogy egy Form vezérlőit (a controllokat) sosem tesszük Publikussá, az maradjon csak meg a form számára. Van/lehet olyan eset, amikor szükséges "kívülről" változtatni, arra is megvannak a módszerek. Ha csak az érték kell (mint jelen esetben neked), akkor egyszerűen egy változóban tovább küldjük.
Módosítottam a programodat, tanulmányozd egy kicsit, szerintem rá fogsz jönni.Mutasd a teljes hozzászólást!Csatolt állomány- UniverseOfWars_modified.zip49,14 KB
- UniverseOfWars_modified.zip