cosie
asked on
How to AllowColumnReorder programmatically on listview - C# .Net 1.1
How to AllowColumnReorder programmatically in C# .Net 1.1???
Here is a working sample in VB.net:
http://bytes.com/forum/thread223912.html
My conversion does not work in C#, it causes a nullreference exception...
What's wrong???
Here is a working sample in VB.net:
http://bytes.com/forum/thread223912.html
My conversion does not work in C#, it causes a nullreference exception...
What's wrong???
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace WindowsApplication5
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
static int LVM_SETCOLUMNORDERARRAY = 0x103A; //LVM_FIRST + 58;
static int LVM_GETCOLUMNORDERARRAY = 0x103B; //LVM_FIRST + 59;
// [DllImport("user32.dll", EntryPoint="SendMessageA")]
// static extern int ListViewColumnOrder(Int32 hwnd , Int32 Msg , Int32 wParam , Int32 lParam );
[DllImport("user32.dll")]
public static extern bool ListViewColumnOrder(IntPtr hWnd, Int32 msg, Int32 wParam, IntPtr lParam);
// [DllImport("user32.dll")]
// static extern bool SendMessage(IntPtr hWnd, Int32 msg, Int32 wParam,ref LVCOLUMN lParam);
bool FirstTime = true;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ColumnHeader columnHeader3;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("fsdfdas");
System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("fsdfdsa");
System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("erterwtwer");
this.button1 = new System.Windows.Forms.Button();
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(72, 248);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(120, 16);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// listView1
//
this.listView1.AllowColumnReorder = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2,
this.columnHeader3});
this.listView1.GridLines = true;
this.listView1.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
listViewItem1,
listViewItem2,
listViewItem3});
this.listView1.Location = new System.Drawing.Point(0, 8);
this.listView1.MultiSelect = false;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(288, 240);
this.listView1.TabIndex = 1;
this.listView1.View = System.Windows.Forms.View.Details;
//
// columnHeader2
//
this.columnHeader2.Text = "ColumnHeader2";
//
// columnHeader3
//
this.columnHeader3.Text = "ColumnHeader3";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.listView1);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
int c=0;
Int32 [] sortorder;
private void button1_Click(object sender, System.EventArgs e)
{
//sortorder=new int(ListView1.Columns.Count - 1);
if(FirstTime){
c = 2;
FirstTime = false;
sortorder=new Int32[3];
}
if( c > 2 )c = 0;
sortorder[0] = c;
c += 1;
if( c > 2) c = 0;
sortorder[1] = c;
c += 1;
if( c > 2 )c = 0;
sortorder[2] = c;
SetColumnOrder(listView1, sortorder);
}
public void SetColumnOrder(ListView ListViewToReorder , int[] SortOrder )
{
if( SortOrder.Length < 1 )return;
if( SortOrder.Length > ListViewToReorder.Columns.Count) return;
Int32 liSetColumnOrderArray = LVM_SETCOLUMNORDERARRAY;
Int32 handle=listView1.Handle.ToInt32();
Int32 slen=SortOrder.Length;
this.Handle
int liSuccess = ListViewColumnOrder(handle, liSetColumnOrderArray, slen, SortOrder[0]);
if( liSuccess!=0)
{
listView1.Refresh();
}
}
}
}
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.