Bonjours,


Il s'agis d'un button, crée dans une classe séparée (vu la quantité je peux pas passer par le desingner)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
using System;
using System.Drawing;
using System.Windows.Forms;
 
/*
 usage CButton But0 = new (this,"Welcome"); 
 */
namespace CustomItemButton
{
    public class CButton : Button
    {
        private Form SrcForm;
        private Button But;
 
 
        //constructeur
        public CButton(Form SForm, string Name, string Text = "", 
                                int PosH = 0, int PosV = 0 , 
                                int LenV = 200, int LenH = 50, 
                                string FontName = "Times New Roman", 
                                float SizeFont = 16)
        {
            //ça miaule donc methode ? (Rendre le champ readonly):-> But = new Button();
            NewButton();
            SetForm(SForm);
            //default
            But.Name = Name;
            SrcForm.Controls.Add(But);
            But.BackColor = Color.FromArgb(0, 0, 0);
            But.ForeColor = Color.FromArgb(0, 255, 00);
            But.Text = Text;
            But.Font = new Font(FontName, SizeFont);
            But.FlatStyle = FlatStyle.Popup;
            But.Location = new Point(PosH, PosV);
            But.Height = LenH;
            But.Width = LenV;
 
            //association
            But.Click += new System.EventHandler(But_DoubleClick);
        }
        private void NewButton()
        {
            But = new Button();
        }
        private void SetForm(Form SForm)
        {
            SrcForm = SForm;
        }
        public override String Text
        {
            get { return But.Text; }
            set { But.Text = value; }
        }
 
        private void But_DoubleClick(Object sender, EventArgs e)
        {
            //SrcForm.Text = But.Text;//a adapter
            //SrcForm.Text=SrcForm.t;
            if ( But.Name == "StartStopThreadDNS" )
            {
                // methode introuvable ???
                // SrcForm.StartStopTreadCleanDns(true);
 
            }
        }
    }
}
/* memo
    * public event EventHandler DoubleClick;
    * public event EventHandler ThresholdReached;
    *
*/

Je comptait donc mettre dans la form1

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
using System.Windows.Forms;
using CustomItemButton;
using MyThread;
 
namespace DnsClean
{
 
    public partial class Form1 : Form
    {
		//Creation du boutton personaliser
		CButton But0 = new ( this, "StartStopThreadDNS", "Start clean DNS");
		//Affectation de l'instance pour un usage local.
		FBut0 = But0;
 
		public Form1()
		{
 
			InitializeComponent()
 
			CButton But0 = new ( this, "StartStopThreadDNS", "Start clean DNS");
			FBut0 = But0;
		}
 
 
		public void StartStopTreadCleanDns(bool start)
              {
			//methode inconnue par le button ??
              }
	}
 
}

Dans le button la methode StartStopTreadCleanDns est inaccessible, qui est pour temps public

j'ai bien tenter de passer la form avec le mots clef "ref " mai j'obtiens l'erreur ( CS0119 'Form1' est un type, qui n'est pas valide dans le contexte donné)

Donc je lui passe un type déclarer il me semble correctement.

la doc de microsoft: https://docs.microsoft.com/fr-fr/dot...rp/misc/cs0119

J'ai bien tenter un Form.Form1 mai c est pas sa non plus. donc comment est-ce qu'on fait ??