C Sharp Form übergreifend das Panel ändern
Hallo
ich habe ein Form1 mit Menü Band und einem panel1
Im panel1 werden meine Subforms geladen je nachdem was im Menü ausgewählt wird.
Nun habe ich im Subform (Dash.cs) ein dataGridView1 wenn ich ein Doppel klick mache möchte ich ein neues Subform im panel1 öffnen und einen Wert übergeben.
Dazu habe ich ein Subform erstellt detail.cs
Zum Öffnen nutze ich den Code
Wie kann ich das öffnen im panel1 im Dash.cs machen?
Sprich Dash.cs wird geschlossen und soll im panel1 Detail.cs öffnen.
ich habe ein Form1 mit Menü Band und einem panel1
Im panel1 werden meine Subforms geladen je nachdem was im Menü ausgewählt wird.
Nun habe ich im Subform (Dash.cs) ein dataGridView1 wenn ich ein Doppel klick mache möchte ich ein neues Subform im panel1 öffnen und einen Wert übergeben.
Dazu habe ich ein Subform erstellt detail.cs
detail.cs:
public partial class Detail : Form
{
public Detail(string Inventar)
{
inv = Inventar;
InitializeComponent();
}
private string inv = "";
private void Detail_Load(object sender, EventArgs e)
{
label1.Text = inv;
}
}
Form1.cs:
panel1.Controls.Clear();
Detail objForm = new Detail("xx");
objForm.TopLevel = false;
panel1.Controls.Add(objForm);
objForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
objForm.Dock = DockStyle.Fill;
objForm.Show();
Wie kann ich das öffnen im panel1 im Dash.cs machen?
Sprich Dash.cs wird geschlossen und soll im panel1 Detail.cs öffnen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 333437
Url: https://administrator.de/contentid/333437
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
3 Kommentare
Neuester Kommentar
So in etwa. In kurz:
Dash.cs:
Form1.cs
- Dash.cs definiert Event "SelectionChanged " mit dem DashItemEventArgs
- Form1 hängt sich an den Event
- Event wird ausgelöst wenn im dataGridView1 eine Zeile ausgewählt wird
- Dash wird entfernt
- Details wird hinzugefügt
Dash.cs:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Dash : Form
{
public Dash()
{
InitializeComponent();
dataGridView1.SelectionChanged += DataGridView1_SelectionChanged;
}
private void DataGridView1_SelectionChanged(object sender, EventArgs e)
{
var dgw = (DataGridView) sender;
if (dgw.SelectedRows.Count == 1)
{
// in der nächsten Zeile die ID aus dem GridView holen
var id = 1;
OnDashItemSelected(1);
}
}
public event EventHandler<DashItemEventArgs> DashItemSelected;
protected virtual void OnDashItemSelected(long id)
{
DashItemSelected?.Invoke(this, new DashItemEventArgs(id));
}
}
public class DashItemEventArgs:EventArgs
{
public long Id { get; }
public DashItemEventArgs(long id)
{
Id = id;
}
}
}
Form1.cs
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Dash dash = null;
public Form1()
{
InitializeComponent();
dash = new Dash();
// Dash anzeigen
dash.DashItemSelected += _currentDash_DashItemSelected;
}
private void _currentDash_DashItemSelected(object sender, DashItemEventArgs e)
{
this.Controls.Remove((Control)sender);
var details = new Details(e.Id);
// details anzeigen
}
}
}