)在另一个线程和类中我在一个列表上运行,该列表包含我解析的每一行的相同行,并在完成该行后做一些事情我想要索引在列表框根据我的基本和有限的了解进行更改,我的方法是使用事件来激活表单,而不是使用调用(不是用于跨线程)有没有办法以某种方式绑定到我的for/foreach中的列表框索引环形?类形式{listBoxScript.SetSelected(ScriptCounter,true);<--绑定ScriptCounter?}在另一个类中classRunScript{//..publicvoidRunScriptList(){ScriptCounter=0;foreach(ScriptList中的varcell){ScriptCounter++;//DoSomething}}}确保在RunScript类中实现INotifyPropertyChanged。这是一个完整的示例:classRunScript:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;私有int脚本计数器;私有ISynchronizeInvoke调用程序;publicRunScript(ISynchronizeInvokeinvoker){if(invoker==null)thrownewArgumentNullException("invoker");this.invoker=调用者;}publicasyncvoidRunScriptList(){ScriptCounter=0;foreach(Enumerable.Range(1,15)中的可变单元格){ScriptCounter++;等待任务。延迟(1000);//DoSomething}}publicintScriptCounter{get{returnscriptCounter;}设置{scriptCounter=值;OnPropertyChanged();}}protectedvirtualvoidOnPropertyChanged([CallerMemberName]stringpropertyName=null){varhandler=PropertyChanged;if(handler!=null){Actionaction=()=>handler(this,newPropertyChangedEventArgs(propertyName));invoker.Invoke(action,null);}}}私有RunScriptrs;publicForm1(){InitializeComponent();rs=newRunScript(这个)varbinding=newBinding("SelectedIndex",rs,"ScriptCounter",false,DataSourceUpdateMode.OnPropertyChanged);listBox1.DataBindings.Add(绑定);}privatevoidbutton1_Click(objectsender,EventArgse){rs.RunScriptList();RunScriptList使用了async/await,如果在另一个线程中执行,需要在主线程中触发PropertyChanged事件,避免跨线程异常以上是C#学习教程:绑定列表框索引共享的所有内容C#,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
