无法使用列填充ListView

时间:2016-06-22 20:30:52

标签: c#

我创建了一个包含3列的ListView(详细信息),我想填充它们但是当我在Active Directory中运行应用程序时出现此错误:"索引超出范围。必须是非负的且小于集合的大小"。参数名称:index

更新:此代码现在正常运行(但我需要转换为日期时间格式。

#include<stdio.h>
int x[8] = {  2, 1, -1, -2, -2, -1,  1,  2 };
int y[8] = {  1, 2,  2,  1, -1, -2, -2, -1 };
int sol[100][100]={0};
int isvalid(int i,int j,int n)
{
    if(i>=0&&j>=0&&i<n&&j<n)
    {
        if(sol[i][j]==0)
        return 1;
        else
        return 0;
    }
    return 0;
}
int solvekt(int i,int j,int k,int n)
{
    printf("i=%d j=%d k=%d\n",i,j,k);
    if(k==n*n+1)
    return 1;
    int m,i1,j1,ans=0;
    for(m=0;m<8;m++)
    {
        i1=i+x[m];
        j1=j+y[m];
        if(isvalid(i1,j1,n))
        {
            printf("i=%d j=%d i1=%d j1=%d k=%d\n",i,j,i1,j1,k);
            sol[i1][j1]=k;
            ans=solvekt(i1,j1,k+1,n);
            if(ans)return 1;
            else
            sol[i1][j1]=0;
         }
    }
    return 0;   
 }
int main()
{
    int n=6,i,j;
    sol[0][0]=1;
    if(!solvekt(0,0,2,n))printf("not possible\n");
    else
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        printf("%d ",sol[i][j]);
        printf("\n");
    }
    return 0;
}

请问我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为这是因为pwdLastSet在首都需要字母LS。试试这个linq解决方案以避免空例外:

directorySearcher.PropertiesToLoad.Add("name");
directorySearcher.PropertiesToLoad.Add("physicalDeliveryOfficeName");
directorySearcher.PropertiesToLoad.Add("pwdLastSet");

SearchResult.Items.AddRange(
    directorySearcher.FindAll().Where(x => x.Properties != null).Select(x => new ListViewItem(new string[] {
        x.Properties["name"] != null && x.Properties["name"].Any() 
            ? x.Properties["name"][0] 
            : String.Empty,
        x.Properties["physicalDeliveryOfficeName"] != null && x.Properties["physicalDeliveryOfficeName"].Any() 
             ? x.Properties["physicalDeliveryOfficeName"][0] 
             : String.Empty,
        x.Properties["pwdLastSet"] != null && x.Properties["pwdLastSet"].Any() 
             ? x.Properties["pwdLastSet"][0] 
             : String.Empty
    }))
);