小编use*_*491的帖子

使用ObservableCollection未正确更新ListView

我目前正在使用一个可观察的集合来存储我的ListView数据对象.将新对象添加到集合中工作正常,listView正确更新.但是,当我尝试更改集合中对象的某个属性时,listView将无法正确更新.例如,我有一个可观察的集合DataCollection.我试试

_DataCollections.ElementAt(count).Status = "Active";
Run Code Online (Sandbox Code Playgroud)

由于按下按钮,我在长时间操作之前执行此更改.listView不会反映更改.所以我补充一下myListView.Items.Refresh(); 这是有效的,但是在button_click方法完成之前,listView不会刷新,这在那时是不行的.例如:

   button1_Click(...)
    {
      _DataCollections.ElementAt(count).Status = "Active";
      myListView.Items.Refresh();
      ExecuteLongOperation();
      _DataCollections.ElementAt(count).Status = "Finished";
      myListView.Items.Refresh();
    }
Run Code Online (Sandbox Code Playgroud)

状态将永远不会转到"活动",它将在方法完成后直接转到"已完成".我也尝试使用这样的调度程序:

button1_Click(...)
    {
      this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
            (NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status =  "Active"; myListView.Items.Refresh(); });

      ExecuteLongOperation();
     this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
            (NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status =  "Finished"; myListView.Items.Refresh(); });

    }
Run Code Online (Sandbox Code Playgroud)

但是,这似乎也不正常.任何提示或想法将不胜感激.

c# listview dispatcher observablecollection

8
推荐指数
2
解决办法
3362
查看次数

将四个32位的int转换为java中的IP地址

使用此处的代码:https://libbits.wordpress.com/2011/05/17/check-if-ip-is-within-range-specified-in-cidr-in-java/

  // Step 1. Convert IPs into ints (32 bits). 
// E.g. 157.166.224.26 becomes 10011101  10100110  11100000 00011010
int addr = (( 157 << 24 ) & 0xFF000000) 
           | (( 166 << 16 ) & 0xFF0000) 
           | (( 224 << 8 ) & 0xFF00) 
           |  ( 26 & 0xFF);

// Step 2. Get CIDR mask
int mask = (-1) << (32 - 10);

// Step 3. Find lowest IP address
int lowest = addr & mask;

// …
Run Code Online (Sandbox Code Playgroud)

java ip 32-bit type-conversion

3
推荐指数
1
解决办法
2565
查看次数

在java中使用正则表达式和split方法时遇到问题

我有一个字符串列表,我需要解析名称和版本,例如一些字符串看起来像这样:

应用程序名称1.2.5
AppName 7.8.b
应用程序名称7.0

我希望有两个字符串列表,其中一个带有应用程序名称,另一个带有版本号,因此一个列表是:

应用名称
AppName
应用名称

然后另一个列表将是

1.2.5
7.8.b
3.0

我曾尝试使用空格来分割字符串,但如果名称始终位于索引0并且版本始终位于索引1中,那么这将是最简单的.所以我尝试了"\\ d"(按数字分割),但是不像我想的那样工作.任何帮助将不胜感激,并提前感谢

java regex split

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