小编kaw*_*awa的帖子

CheckedListBox检查列表项属性绑定到类中的字段

我有一个具有两个属性的类,我想将它绑定到CheckedListBox项.WebsiteName属性将是DisplayValue,IsChecked应该是项目的Checked状态:

public class ACLASS:
{       
    public string WebsiteName 
    { 
        get;
        set;
    }

    public bool IsChecked
    {
        get;
        set;
    }

    public ACLASS() 
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我'尝试'绑定它的方式:

    ACLASS aclass = new ACLASS();
    aclass.WebsiteName = "www.example.com";
    BindingList<ACLASS> list = new BindingList<ACLASS>();
    list.Add(aclass);

    checkedlistbox.DataSource    = list;
    checkedlistbox.DisplayMember = "WebsiteName";       
Run Code Online (Sandbox Code Playgroud)

这一切都很好,但是如何将CheckedListBox中项目的Checked状态与类的IsChecked属性绑定,所以当我检查CheckedListBox中的项目时,它还会更改ACLASS实例的IsChecked属性?我需要这个,所以我可以通过ACLASS实例验证项目的检查状态.

c# data-binding winforms

5
推荐指数
1
解决办法
4914
查看次数

如何从Action返回值

我有代理测试功能.在它里面我有一个catch块,并且在指定的时间(TIMEOUT)之后如果代理不好我返回一个假标志.问题是,即使没有例外,每10次函数会挂起一次.实际上HttpWebResponse.Timeout不能正常工作(或者它可能会工作,但我不知道如何使用它).所以SO用户给了我这个解决方案:

public class TimeoutInvoker
{
    public static void Run(Action action, int timeout)
    {
        var waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
        AsyncCallback callback = ar => waitHandle.Set();
        action.BeginInvoke(callback, null);

        if (!waitHandle.WaitOne(timeout))
            throw new TimeoutException("Timeout.");
    }
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

TimeoutInvoker.Run(()=>ProxyIsGood(ip, port));
Run Code Online (Sandbox Code Playgroud)

问题是我需要像这样使用它,返回值:

while( !(TimeoutInvoker.Run(()=>ProxyIsGood(ip, port)) )
{
    reset_stuff();
}
Run Code Online (Sandbox Code Playgroud)

那么如何修改TimeoutInvoker呢?

.net c# delegates

2
推荐指数
1
解决办法
978
查看次数

标签 统计

c# ×2

.net ×1

data-binding ×1

delegates ×1

winforms ×1