Probleme de dataGridView, pour ajouter une ligne
Bonjour,
J'ai un probleme concernant un datagridview en winform.
J'ai fais un code qui me permet de lister un nombre de chemin de fichier.
J'ai binder une Liste de StringValue (via : https://stackoverflow.com/questions/...idview-control
J'ai autorisé l'ajout de nouvelle ligne dans la binding source ainsi que pour le datagridview.
Je peux ajouter une première valeur sans soucis. Mais la ligne blanche me permettant d'ajouter des données n'apparait pas après.
Pourriez vous m'aider ?
Merci.
F.
Code:
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
|
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 CockPit2018
{
public partial class SelectionMFichier: Form
{
public SelectionMFichier()
{
InitializeComponent();
}
public List<StringValue> Listbindingfiles = new List<StringValue>();
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex == -1 || e.ColumnIndex == -1)
return;
OpenFileDialog ofd = new OpenFileDialog();
if(ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = ofd.FileName;
}
dataGridView1.EndEdit();
}
public List<string> GetFilesList()
{
return Listbindingfiles.Select(sv => sv.Value).ToList();
}
public void SetFileList(List<string> filelist)
{
Listbindingfiles.Clear();
foreach(string file in filelist)
Listbindingfiles.Add(new StringValue(file));
}
}
public class StringValue
{
public StringValue() { }
public StringValue(string s)
{
_value = s;
}
public string Value { get { return _value; } set { _value = value; } }
string _value;
}
} |
Le coté designer :
Code:
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 74 75
|
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.valueDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.stringValueBindingSource = new System.Windows.Forms.BindingSource(this.components);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.stringValueBindingSource)).BeginInit();
this.SuspendLayout();
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = true;
this.dataGridView1.AllowUserToResizeColumns = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.valueDataGridViewTextBoxColumn});
this.dataGridView1.DataSource = this.stringValueBindingSource;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 0);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.Size = new System.Drawing.Size(532, 185);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
//
// valueDataGridViewTextBoxColumn
//
this.valueDataGridViewTextBoxColumn.DataPropertyName = "Value";
this.valueDataGridViewTextBoxColumn.HeaderText = "Chemin des fichiers";
this.valueDataGridViewTextBoxColumn.Name = "valueDataGridViewTextBoxColumn";
//
// stringValueBindingSource
//
this.stringValueBindingSource.AllowNew = true;
this.stringValueBindingSource.DataSource = typeof(CockPit2018.StringValue);
//
// SelectionMFichier
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(532, 185);
this.Controls.Add(this.dataGridView1);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "SelectionMFichier";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
this.Text = "Selection Fichiers";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.stringValueBindingSource)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridViewTextBoxColumn valueDataGridViewTextBoxColumn;
private System.Windows.Forms.BindingSource stringValueBindingSource;
} |
pensez à utiliser les balises de code
Bonjour mon cher,
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex == -1 || e.ColumnIndex == -1)
return;
OpenFileDialog ofd = new OpenFileDialog();
if(ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dataGridView1.Rows[e.RowIndex].Cells[0].Value = ofd.FileName;
}
dataGridView1.EndEdit();
} |
y a t il du code derière cette methode ? dataGridView1.EndEdit();.
Et pourquoi n'utilises tu pas la propriété AllowUserToAddRows pour forcer le datagriview à ajouter une nouvelle ligne ?