【问题标题】:How to Hide Dictionary Key in LookupEdit using C#?如何使用 C# 在 LookupEdit 中隐藏字典键?
【发布时间】:2013-02-06 11:28:48
【问题描述】:

我创建了一个普通的 winform 并将 LookUpEdit 添加到我的表单中,并创建了一个包含 string 键和 string 值的字典。我使用BindingSource 加载了我的LookupEdit.Properties.Datasource。
加载 Lookupedit 时,我想隐藏字典键:

private LookUpEdit lookup1;

void InitializeComponent()
{
    //...
    this.lookup1 = new DevExpress.XtraEditors.LookUpEdit();
    this.lookup1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
    //this.cmbCards.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    this.lookup1.Location = new System.Drawing.Point(400, 125);
    this.lookup1.Name = "Test";
    this.lookup1.Properties.ShowHeader = false;
    this.lookup1.Properties.ValueMember = "Test";
    this.lookup1.Size = new System.Drawing.Size(400, 85);
    this.lookup1.TabIndex = 0;
    this.lookup1.Tag = "";
    this.lookup1.Properties.BestFit();
    this.lookup1.Properties.ShowDropDown = DevExpress.XtraEditors.Controls.ShowDropDown.SingleClick;
    this.lookup1.Properties.BestFit();
    this.lookup1.Properties.PopupWidth = 50;
    this.lookup1.Properties.PopupSizeable = false;
    //...
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Dictionary<string, string> dic = new Dictionary<string, string>();
        dic.Add("Test", "1");
        dic.Add("Test2", "2");
        dic.Add("Test3", "3");
        dic.Add("Test4", "4");
        dic.Add("Test5", "5");
        dic.Add("Test6", "6");
        dic.Add("Test7", "7");
        dic.Add("Test8", "8");
        dic.Add("Test9", "9");
        dic.Add("Test10", "10");

        this.lookup1.Properties.DataSource = new BindingSource(dic, null);
        this.lookup1.Properties.ShowLines = false;
        this.lookup1.Properties.ShowPopupShadow = false;
        this.lookup1.ItemIndex = 0;
    }
}

这显示了以下内容:

Output 
Test  1
Test2 2

我需要输出为 '1'
“测试”必须隐藏。

【问题讨论】:

    标签: c# devexpress repositorylookupedit


    【解决方案1】:

    解决方案: 只需将两列添加到lookupEdit,然后分配datasource。之后,您将能够访问这些列。动态生成的列不会添加到 lookupEdit.properties.Columns 集合中。

    参考LookUpEdit Class

    使用这个:

    private void CreateLookupEdit()
    {
        ledMyControl = new LookUpEdit();
        ledMyControl.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Key"));
        ledMyControl.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Value"));
    
        this.Controls.Add(ledMyControl);
        Dictionary<string, string> dic = new Dictionary<string, string>();
        dic.Add("Test", "1");
        dic.Add("Test2", "2");
        dic.Add("Test3", "3");
        dic.Add("Test4", "4");
        dic.Add("Test5", "5");
        dic.Add("Test6", "6");
        dic.Add("Test7", "7");
        dic.Add("Test8", "8");
        dic.Add("Test9", "9");
        dic.Add("Test10", "10");
        ledMyControl.Properties.DisplayMember = "Value";
        ledMyControl.Properties.ValueMember = "Key";
        ledMyControl.Properties.DataSource = dic.ToList();
    
        ledMyControl.Properties.Columns[0].Visible = false;
    }
    

    参考资料:
    Dictionary as datasource
    LookupEdit bound to ArrayList
    Feed lookupEdit with Dictionary

    【讨论】:

      【解决方案2】:

      在后面的代码中管理以下事件

      lookup1.Popup += new EventHandler(gridLookUpEdit1_Popup);
      
      protected void gridLookUpEdit1_Popup(object sender, EventArgs e)
      {
          this.lookup1.Properties.View.Columns[0].Visible = false;
      }
      

      【讨论】:

      • 在 LookUpEdit 中没有像你提到的那样的属性......但你可以这样做 this.lookup1.Properties.Columns[0].Visible = false; ,...这也失败了
      • 索引超出范围。必须是非负数且小于集合的大小。参数名称:索引它说这个错误
      猜你喜欢
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多