Tengo un ListView In My Winform que tiene 4 columnas, nombre, dinero, ID y nivel.¿Evitar que los usuarios cambien el ancho de las columnas en ListView?
El problema es que cuando ejecuto mi aplicación, todavía tengo la capacidad de meterse con el ancho de las columnas y cambiarlas.
I buscado y encontrado que yo debería hacer algo como esto:
private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
e.Cancel = true;
e.NewWidth = listView1.Columns[e.ColumnIndex].Width;
}
Pero el problema es que cuando depurado y Ccanged los anchos de columna, este evento no incluso un incendio!
¿Por qué no se disparó?
¿Y cómo puedo hacer que se fijen los anchos de las columnas?
me hizo una nueva aplicación WinForm por si acaso si había algo mal en mi viejo, se disparó, pero sólo para la primera vez que ejecuta la aplicación .. aquí está el código:
namespace CsharpWinformTestingStuff
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listView1.ColumnWidthChanging += new ColumnWidthChangingEventHandler(listView1_ColumnWidthChanging);
}
void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
e.Cancel = true;
e.NewWidth = listView1.Columns[e.ColumnIndex].Width;
}
}
}
aquí es el componente de inicialización si acaso es posible que quieras saber:
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.SuspendLayout();
//
// listView1
//
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2,
this.columnHeader3});
this.listView1.GridLines = true;
this.listView1.Location = new System.Drawing.Point(12, 12);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(284, 275);
this.listView1.TabIndex = 0;
this.listView1.UseCompatibleStateImageBehavior = false;
this.listView1.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "Name";
this.columnHeader1.Width = 97;
//
// columnHeader2
//
this.columnHeader2.Text = "Age";
this.columnHeader2.Width = 52;
//
// columnHeader3
//
this.columnHeader3.Text = "Email";
this.columnHeader3.Width = 157;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(308, 299);
this.Controls.Add(this.listView1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
posible duplicado de [cómo arreglar el ancho de columna de una vista de lista en el formulario de Windows de C#?] (Http://stackoverflow.com/questions/2460308/how-to-fix-the-column-width- of-a-listview-in-c-sharp-windows-form) –
se dispara. Intente asegurarse de que el evento se esté registrando correctamente. – nawfal