我有一个列表框:
<ListBox x:Name="lbxAF" temsSource="{Binding}">
Run Code Online (Sandbox Code Playgroud)
从这个修改过的Observable Collection中获取数据:
public ObservableCollectionEx<FileItem> folder = new ObservableCollectionEx<FileItem>();
Run Code Online (Sandbox Code Playgroud)
这是在使用FileSystemWatcher监视特定文件夹以添加,删除和修改文件的类中创建的.
ObservableCollection被修改了(因此最后是Ex),所以我可以从外部线程修改它(代码不是我的,我实际上通过这个网站搜索并发现它,就像一个魅力):
// This is an ObservableCollection extension
public class ObservableCollectionEx<T> : ObservableCollection<T>
{
// Override the vent so this class can access it
public override event System.Collections.Specialized.NotifyCollectionChangedEventHandler CollectionChanged;
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
using (BlockReentrancy())
{
System.Collections.Specialized.NotifyCollectionChangedEventHandler eventHanlder = CollectionChanged;
if (eventHanlder == null)
return;
Delegate[] delegates = eventHanlder.GetInvocationList();
// Go through the invocation list
foreach (System.Collections.Specialized.NotifyCollectionChangedEventHandler handler in delegates)
{
DispatcherObject dispatcherObject = handler.Target as …Run Code Online (Sandbox Code Playgroud) 我想存储一些数据,如名字,姓氏,出生日期,地址,电话号码等.总共可能有大约50个字段.存储数据的好方法是什么?我正在考虑使用一个名为Person的类,并在其中放入一堆成员用于字段.例如:
public class Person {
private String fName;
private String mName;
private String lName;
private String dob;
private String address;
private String phNumber;
private String sex;
private String aka;
// etc...
public void setfName(String st) {
fName = st;
}
public String getfName() {
return fName;
}
// etc....
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来执行此任务?
编辑:
我还要提一下,每个数据字段都会(希望如果我弄清楚如何去做)插入到Microsoft Word模板中.我不一定计划处理超出该范围的数据.我现在所拥有的是一个pdf文档,我可以从中提取文本.我将解析该文本并尝试从中获取所有数据.然后我将该数据插入到单词模板中(如果可能的话).
这是一个简单的python 3.x TCP服务器:
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
print(str(self.client_address[0]) + " wrote: " + str(self.data.decode()))
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
和客户:
import socket
import sys
HOST, PORT = "localhost", 9999
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
while( True ):
data = input("Msg: ")
if data == "exit()":
print("Exiting...")
sock.close()
exit();
sock.sendall(bytes(data, "utf-8"))
#numBytes = ....?
#print("Sent: " + str( numBytes ) + " bytes\n")
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何查看消息中发送的确切字节数。我可以使用len(data),但它不能说明空终止符,因此...。是否也要发送空终止符,还是无关紧要?我尝试研究已发送/已接收消息的确切字节数,但是我找不到任何特定于python的文档,只看到了使用len()的人的示例,我认为这不是确切的...
有任何想法吗?
我正在使用FileSystemWatcher类来监视文件夹并在事件发生时更新列表.我正在使用以下类来保存每个文件的信息:
public class FileItem
{
public string Name { get; set; }
public string Path { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下列表包含该信息的集合:
public static List<FileItem> folder = new List<FileItem>();
Run Code Online (Sandbox Code Playgroud)
我在列表中添加了一些FileItem对象.但是,要删除具有匹配名称的特定项,我不能只使用foreach()循环,因为枚举更改,并且一旦删除文件,我就会得到一个异常.因此,我添加了一个中断(因为只有一个具有相同名称的文件)在项目被删除后突破foreach()循环...但我不确定它是否是最有效的方法它.有更简单,更合适的方式吗?这是我删除的代码:
private static void OnChanged(object source, FileSystemArgs e)
{
if (e.ChangeType == WatcherChangeTypes.Deleted)
{
foreach (var item in folder)
{
if (item.Name == e.Name)
{
folder.Remove(item);
folder.TrimExcess();
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 整晚都在敲打我的脑袋.我想要做的就是有一个内容控件,可以根据ViewModel中的布尔值在显示两个不同的按钮之间切换.
基本上我有一个任务在后台运行,带有取消按钮.一旦你点击取消并且任务停止,取消按钮应该变为后退按钮.这是两个单独的按钮元素,而不仅仅是更改单个按钮的属性.我正在使用MahApps TransitioningContentControl,所以我希望能够使用转换.
如果这大部分可以在XAML中完成,我会很惊讶.我真的不想为一个简单的东西添加一堆样板代码.
编辑:这是代码片段.没有太多因为我刚刚删除了所有无效的内容.
<Controls:TransitioningContentControl x:Name="CancelBackButtonControl" HorizontalAlignment="Left" VerticalAlignment="Top" Width="80" Height="80">
<Canvas>
<Button x:Name="CancelButton" HorizontalAlignment="Left" VerticalAlignment="Top" Width="80" Style="{DynamicResource MetroCircleButtonStyle}" Height="80" IsCancel="True" Content="{StaticResource appbar_close}" BorderBrush="Black" Command="{Binding CancelCommand}"/>
<Button x:Name="GoBackButton" HorizontalAlignment="Left" VerticalAlignment="Top" Width="80" Style="{DynamicResource MetroCircleButtonStyle}" Height="80" IsCancel="True" Content="{StaticResource appbar_arrow_left}" BorderBrush="Black" Command="{Binding GoBackCommand}"/>
</Canvas>
</Controls:TransitioningContentControl>
Run Code Online (Sandbox Code Playgroud) 目前,用户可以通过单击并拖动鼠标在画布上绘图.如何更改线条的颜色以指示用户的光标悬停在线上?当光标位于任何给定行的5个像素内以指示它们接近时,将其强调是理想的.
初始绘图......
当用户的光标直接悬停在任何给定行的5个像素之上或之内时.
MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Canvas Name="paintSurface" MouseDown="Canvas_MouseDown_1" MouseMove="Canvas_MouseMove_1" >
<Canvas.Background>
<SolidColorBrush Color="White" Opacity="0"/>
</Canvas.Background>
</Canvas>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
MainWindow.cs
using System.Windows;
using System.Windows.Input;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
Point currentPoint = new Point();
public MainWindow()
{
InitializeComponent();
}
private void Canvas_MouseDown_1(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.ButtonState == MouseButtonState.Pressed)
currentPoint = e.GetPosition(this);
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 C# 最小化 Microsoft Edge 浏览器。除了 Microsoft Edge 之外,所有其他浏览器(如 Chrome、Firefox、Internet Explorer)都运行良好。
任何人都可以帮我解决这个问题。
这是我的代码。
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
static void Main(string[] args)
{
var processes = Process.GetProcessesByName("MicrosoftEdge");
//var processes = Process.GetProcessesByName("chrome");
foreach (var process in processes)
ShowWindow(process.MainWindowHandle, 2);
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试取消注释它正在运行的 Chrome 进程。
我文件的每一行都包含一个未知数量的整数,这些整数用空格分隔.我想在每一行中读取这些整数的向量.
以下是此类文件的示例:
11 3 0 1
4 5 0 3
2 3 4 1
23 4 25 15 11
0 2 6 7 10
5 6 2
1
11
Run Code Online (Sandbox Code Playgroud)
我已经能够使用以下方法成功读取少量数据(请注意,outer_layers是包含我试图填充的这些向量的向量):
for (int i = 0; i < outer_layers.size(); i++)
{
while (in >> temp_num)
{
outer_layers[i].inner_layer.push_back(temp_num);
if (in.peek() == '\n')
break;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试读取大量数据时,有时它会在一个向量下读取两行.在其中一个文件中,在24行中,它有两次读取两行,因此最后两个向量没有任何数据.
我无法绕过它.我有什么想法我做错了吗?
编辑:我在麻烦制造者文件的一些行中注意到的一些有趣的事情是这样的:
比方说有三行.
23 42 1 5
1 0 5 10
2 3 11
Run Code Online (Sandbox Code Playgroud)
第1行读入就好了23 42 1 5; 然而,第2行和第3行一起读取1 0 5 10 …
在SO上有一些类似的问题,但它们并不是一样的安静,所以我发布了这个问题.我是MVVM的新手,所以我试图找出如何创建一个可以保存可以在视图之间共享的属性的类.因此,如果我在一个视图中设置了一个属性,那么所有其他视图会在其更改后得到通知,并相应地调整其属性.
我现在拥有的是相当粗糙的,绝对不是我想要使用的东西.这是我的常用类,它将包含所有属性:
public static class Common
{
private static string _title;
public static string Title
{
get { return _title; }
set
{
if (_title == value)
{
return;
}
_title = value;
OnPropertyChanged("Title");
}
}
public static void Load()
{
// set properties here
}
public static event PropertyChangedEventHandler PropertyChanged;
private static void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(typeof(SettingsWorker), new PropertyChangedEventArgs(name));
}
}
}
Run Code Online (Sandbox Code Playgroud)
...我必须从每个ViewModel订阅它:
Common.PropertyChanged += Common_PropertyChanged;
private void Common_PropertyChanged(object sender, …Run Code Online (Sandbox Code Playgroud) 如何创建仪表(即速度表)?
具体来说,我正在尝试在此链接上构建图像.
我成功创造了一枚戒指.但是,现在我需要在圆环上添加刻度线.
XAML:
<Window x:Class="MotoLens.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MotoLens"
mc:Ignorable="d"
Background="Black"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:ValueToBrushConverter x:Key="ValueToBrushConverter" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Ellipse Grid.Row="0" Width="300" Fill="Transparent" StrokeThickness="10" Stroke="{Binding ElementName=Slider, Path=Background}" StrokeDashArray="1" StrokeEndLineCap="Square" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)