当前位置:  开发笔记 > 编程语言 > 正文

用于编辑Dictionary的C#GUI控件

如何解决《用于编辑Dictionary的C#GUI控件》经验,为你挑选了1个好方法。

是否有标准控件允许用户编辑String to String Dictionary的键值对?

如果没有,你会如何实现?我有一些想法,但没有一个看起来很棒.



1> Marc Gravell..:

不,没有一个内置.实现一个; 如何实现2列DataGridView,实现IDataErrorInfo重复键导致红色错误blob:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
class Pair : IDataErrorInfo
{
    internal IList Parent { get; set; }
    public string Key { get; set; }
    public string Value { get; set; }

    string IDataErrorInfo.Error
    {
        get { return ""; }
    }

    string IDataErrorInfo.this[string columnName]
    {
        get
        {   
            if(columnName == "Key" && Parent != null && Parent.Any(
                x=> x.Key == this.Key && !ReferenceEquals(x,this)))
            {
                return "duplicate key";
            }
            return "";        
        }
    }
}

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        BindingList pairs = new BindingList();
        // todo: fill from StringDictionary
        pairs.AddingNew += (s,a) =>
        {
            a.NewObject = new Pair { Parent = pairs };
        };
        Application.Run(new Form {
            Controls = {new DataGridView {
                Dock = DockStyle.Fill,
                DataSource = pairs
            }}
        });
    }
}

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有