Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - duplicare un'oggetto
Forum - C# / VB.NET - duplicare un'oggetto

Avatar
riccardob (Normal User)
Newbie


Messaggi: 2
Iscritto: 06/09/2023

Segnala al moderatore
Postato alle 18:34
Mercoledì, 06/09/2023
Un saluto a tutti ,faccio una piccola premessa nel dire che non sono un programmatore e quindi mi scuso in anticipo se dico qualche castroneria,ma vorrei risolvere un problema sicuramente per voi semplice ,ho creato tramite visual studio in c# un form  con un semplice pulsante e una textbox,ho fatto in modo che questi due oggetti potessero essere spostati dalla loro posizione trascinandoli,adesso mi servire se possibile poter duplicare questi oggetti tipo un copia e incolla sempre dal form lato utente,cioe' a programma avviato.
allego il codice qualora servisse.

Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.ComponentModel.Design;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11.  
  12. namespace labelbottom_dinamiche
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.            
  20.            
  21.            
  22.         }
  23.  
  24.         private void button1_DragDrop(object sender, DragEventArgs e)
  25.         {
  26.  
  27.         }
  28.  
  29.         private void Form1_Load(object sender, EventArgs e)
  30.         {
  31.             ControlExtension.Draggable(button1, true);
  32.             ControlExtension.Draggable(textBox1, true);
  33.         }
  34.  
  35.      
  36.         private void button1_Click(object sender, EventArgs e)
  37.         {
  38.  
  39.         }
  40.  
  41.        
  42.     }
  43. }



Grazie per l'attenzione

Ultima modifica effettuata da Thejuster il 08/09/2023 alle 10:10
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2308
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:18
Venerdì, 08/09/2023
In anzi tutto ciao e benvenuto.

Vedo che hai usato una qualche estensione
O pacchetto.

Solitamente per spostare un controllo a runtime
Richiede parecchi passaggi.

Per aggiungere un nuovo pulsante esempio.

Codice sorgente - presumibilmente C# / VB.NET

  1. Button b = new Button();
  2. b.Text = "Pulsante";
  3. Controls.Add(b);
  4. ControlExtension.Draggable(b,true);




Ma questa è solo una parte...
E non è cosa da poco o da novizi insomma.
Dopo devi programmare dinamicamente il controllo,
Aggiungere un evento in base a cosa vuoi che faccia e fare il resto.

Un esempio di quello che stai facendo, e un mio progetto.

http://www.pierotofy.it/pages/projects/project.php?id=615

Scarica il sorgente e dai un occhiata per capire come
Fare determinate cose .
È tutto commentato ;)

Ultima modifica effettuata da Thejuster il 08/09/2023 alle 10:18


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
riccardob (Normal User)
Newbie


Messaggi: 2
Iscritto: 06/09/2023

Segnala al moderatore
Postato alle 18:14
Venerdì, 08/09/2023
ciao ,grazie per avermi dedicato del tempo , in effetti immaginavo che non fosse una cosa semplice,guardero' attentamente il tuo progetto e incrocio le dita.
Ciao e grazie

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1351
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 0:22
Sabato, 09/09/2023
Per diventare programmatore bisogna studiare, provare serve per divertirsi programmando.

L'estenzione che hai usato ti nasconde la programmazione. Ti posto un esempio, se provando a cambiare i parametri ne capisci la logica vedrai che l'estenzione non ti serve e che puoi fare tutto da solo.
Il codice è commentato, studialo, se ti sfugge lo scopo di qualche istruzione, chiedi.

Crea un nuovo progetto e chiamalo: button_dinamici, incolla il codice sotto.
Esegui. Con il tasto sinistro del mouse sposti il bottone cliccato, con il tasto destro aggiungi un bottone. Ho limitato a 10 bottoni ma puoi modificare l'indice della matrice se ne vuoi di più o di meno.
Codice sorgente - presumibilmente C++

  1. using System.Drawing;
  2. using System.Windows.Forms;
  3.  
  4. namespace button_dinamici
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         Button[] button = new Button[10]; // può contenere 10 bottoni indice da 0 a 9
  9.         int Xp; // coordinata X al click del mouse all'interno del bottone
  10.         int Yp; // coordinata Y al click del mouse all'interno del bottone
  11.         int numBUTT = 0;
  12.  
  13.         public Form1()
  14.         {
  15.             InitializeComponent();
  16.             creaBUTT(); // crea il bottone zero
  17.         }
  18.  
  19.         private void button_MouseDown(object sender, MouseEventArgs e)
  20.         {
  21.             if (e.Button == MouseButtons.Left) // click mouse sinistro
  22.             {
  23.                 Xp = e.X; // coordinata X mouse nel bottone al momento del click tasto sinistro, servirà per mantenere la posizione del cursore nel bottone
  24.                 Yp = e.Y; // coordinata Y mouse nel bottone al momento del click tasto sinistro, servirà per mantenere la posizione del cursore nel bottone
  25.                 Button b = (Button)sender; // in sender c'è l'oggetto cliccato, converto in Button e lo immetto in b
  26.                 int ind = (int)b.Tag; // conversione di tipo da oggetto a int
  27.                 Point LocBUTT = b.Location; // coordinate del bottone al momento del click tasto sinistro
  28.                 b.BringToFront(); // il bottone cliccato passa sopra gli altri
  29.  
  30.                 //nella barra del titolo tutte le info recuperate, in b e in b.Tag
  31.                 this.Text = "ID:" + ind + " Posizione iniziale = Left:" + LocBUTT.X + " Top:" + LocBUTT.Y + " Nome = " + b.Name;
  32.             }
  33.  
  34.             if (e.Button == MouseButtons.Right) // click mouse destro, crea nuovo bottone
  35.             {
  36.                 if (numBUTT < button.Length - 1)
  37.                 {
  38.                     numBUTT++; // incremento di 1 per nuovo bottone
  39.                     creaBUTT();
  40.                 }
  41.                 else
  42.                 {
  43.                     this.Text = "Hai creato " + button.Length.ToString() + " bottoni";
  44.                 }
  45.             }
  46.         }
  47.  
  48.         private void button_MouseMove(object sender, MouseEventArgs e)
  49.         {
  50.             if (e.Button == MouseButtons.Left) // solo se mentre si muove il mouse, il tasto sinistro è premuto
  51.             {
  52.                 Button b = (Button)sender; // in sender c'è l'oggetto cliccato, converto in Button e lo immetto in b
  53.                 int ind = (int)b.Tag; // conversione di tipo da oggetto a int
  54.                 b.Top = b.Top + e.Y - Yp; // trascinamento Y sul form
  55.                 b.Left = b.Left + e.X - Xp; // trascinamento X sul form
  56.  
  57.                 //nella barra del titolo tutte le info recuperate, in b e in b.Tag
  58.                 this.Text = "ID:" + ind + " Posizione in movimento = Left:" + b.Left + " Top:" + b.Top + " Nome = " + b.Name;
  59.             }
  60.         }
  61.  
  62.         private void button_MouseUp(object sender, MouseEventArgs e)
  63.         {
  64.             if (e.Button == MouseButtons.Left)
  65.             {
  66.                 Button b = (Button)sender; // // in sender c'è l'oggetto cliccato, converto in Button e lo immetto in b
  67.                 int ind = (int)b.Tag; // conversione di tipo da oggetto a int
  68.                 this.Text = "ID:" + ind + " Posizione finale = Left:" + b.Left + " Top:" + b.Top + " Nome = " + b.Name;
  69.             }
  70.         }
  71.  
  72.         private void creaBUTT()
  73.         {
  74.             button[numBUTT] = new Button(); // alloca per un nuovo bottone
  75.             button[numBUTT].Location = new Point(30,  40 * numBUTT + 40); // coordinate
  76.             button[numBUTT].Name = "button" + numBUTT.ToString("00"); // composizione nome
  77.             button[numBUTT].Tag = numBUTT; // contiene l'indice, utile
  78.             button[numBUTT].Size = new Size(150, 23);
  79.             button[numBUTT].TabIndex = numBUTT; // avanzamento selezione al TAB
  80.             button[numBUTT].Text = numBUTT.ToString("00") + " DragMe_CopyMe"; // composizione testo
  81.             button[numBUTT].MouseDown += new MouseEventHandler(button_MouseDown); // attiva evento
  82.             button[numBUTT].MouseMove += new MouseEventHandler(button_MouseMove); // attiva evento
  83.             button[numBUTT].MouseUp += new MouseEventHandler(button_MouseUp); // attiva evento
  84.             this.Controls.Add(button[numBUTT]); // aggiunge e mostra sul form
  85.         }
  86.     }
  87. }



Ultima modifica effettuata da Carlo il 20/09/2023 alle 10:57


in programmazione tutto è permesso
PM Quote