Ajouter un monthcalander a un datagridview !!

Fermé
s-racem Messages postés 13 Date d'inscription vendredi 1 janvier 2010 Statut Membre Dernière intervention 28 août 2010 - 31 janv. 2010 à 12:10
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 31 janv. 2010 à 12:55
Bonjour,
j'ai developpé une application en vb.net et je veux ajouté un MonthCalender a un colonne d'un datagridview pour faciliter la saisie d'un date
avez vous une idée comment faire cette truc
A voir également:

1 réponse

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
31 janv. 2010 à 12:55
Salut,
c'est en c# mais tu trouvera facilement le transposé en vb (https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.monthcalendar?redirectedfrom=MSDN&view=netframework-4.8
 public partial class Form1 : Form
    {
        MonthCalendar monthCalendar1;
        int row, coloum;
        public Form1()
        {
            InitializeComponent();
            for (int i = 0; i < 4; i++)
            {
                DataGridViewColumn dt = new DataGridViewColumn(new DataGridViewTextBoxCell());
                DataGridViewRow row = new DataGridViewRow();
                dt.HeaderText = "Value" + i;
                dt.Name = dt.HeaderText;
                dataGridView1.Columns.Add(dt);
                dataGridView1.Rows.Add(row);
                if (i==3)
                    dataGridView1.CellClick+=new DataGridViewCellEventHandler(OnChanged);
            }

        }
        private void OnChanged(object sender, DataGridViewCellEventArgs e)
        {
            getCalendar();
            monthCalendar1.Show();
            coloum=e.ColumnIndex;
            row = e.RowIndex;

        }

        private void getCalendar()
        {
            this.monthCalendar1 = new System.Windows.Forms.MonthCalendar();

            // Set the calendar location.
            this.monthCalendar1.Location = new System.Drawing.Point(47, 16);

            // Change the color.
            this.monthCalendar1.BackColor = System.Drawing.SystemColors.Info;
            this.monthCalendar1.ForeColor = System.Drawing.Color.FromArgb(
                                     ((System.Byte)(192)), ((System.Byte)(0)), ((System.Byte)(192)));
            this.monthCalendar1.TitleBackColor = System.Drawing.Color.Purple;
            this.monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow;
            this.monthCalendar1.TrailingForeColor = System.Drawing.Color.FromArgb(
                                     ((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(0)));

            // Add dates to the AnnuallyBoldedDates array.
            this.monthCalendar1.AnnuallyBoldedDates =
                new System.DateTime[] { new System.DateTime(2002, 4, 20, 0, 0, 0, 0),
                                    new System.DateTime(2002, 4, 28, 0, 0, 0, 0),
                                    new System.DateTime(2002, 5, 5, 0, 0, 0, 0),
                                    new System.DateTime(2002, 7, 4, 0, 0, 0, 0),
                                    new System.DateTime(2002, 12, 15, 0, 0, 0, 0),
                                    new System.DateTime(2002, 12, 18, 0, 0, 0, 0)};

            // Add dates to BoldedDates array.
            this.monthCalendar1.BoldedDates = new System.DateTime[] { new System.DateTime(2002, 9, 26, 0, 0, 0, 0) };

            // Add dates to MonthlyBoldedDates array.
            this.monthCalendar1.MonthlyBoldedDates =
               new System.DateTime[] {new System.DateTime(2002, 1, 15, 0, 0, 0, 0),
                                  new System.DateTime(2002, 1, 30, 0, 0, 0, 0)};

            // Configure the calendar to display 3 rows by 4 columns of months.
            this.monthCalendar1.CalendarDimensions = new System.Drawing.Size(4, 3);

            // Set week to begin on Monday.
            this.monthCalendar1.FirstDayOfWeek = System.Windows.Forms.Day.Monday;

            // Set the maximum visible date on the calendar to 12/31/2010.
            this.monthCalendar1.MaxDate = new System.DateTime(2010, 12, 31, 0, 0, 0, 0);

            // Set the minimum visible date on calendar to 12/31/2010.
            this.monthCalendar1.MinDate = new System.DateTime(1999, 1, 1, 0, 0, 0, 0);

            // Only allow 21 days to be selected at the same time.
            this.monthCalendar1.MaxSelectionCount = 21;

            // Set the calendar to move one month at a time when navigating using the arrows.
            this.monthCalendar1.ScrollChange = 1;

            // Do not show the "Today" banner.
            this.monthCalendar1.ShowToday = false;

            // Do not circle today's date.
            this.monthCalendar1.ShowTodayCircle = false;

            // Show the week numbers to the left of each week.
            this.monthCalendar1.ShowWeekNumbers = true;
            this.monthCalendar1.DateSelected += new System.Windows.Forms.DateRangeEventHandler(this.monthCalendar1_DateSelected);

            dataGridView1.Controls.Add(monthCalendar1);

        }
        private void monthCalendar1_DateSelected(object sender, System.Windows.Forms.DateRangeEventArgs e)
        {
            // Show the start and end dates in the text box.
            dataGridView1[coloum, row].Value = e.Start.ToShortDateString();
            (sender as MonthCalendar).Dispose();
        }

    }

En fait cela permet de faire apparaitre un MonthCalendar quand tu cliques sur une cellule de la colonne 3...
C'est peut-etre pas exactement ce que tu souhaite mais ca te donnera peut-etre des idées!!;)
@+
2