在C#.NET中创建安装文件后更改连接字符串

我正在创建一个C#windows表单应用程序,工作可以概括为用户填写某些表单并将数据保存在Access数据库中。 现在我遇到的问题是我必须将此作为设置文件提供给某人。 我想的是,一旦安装在其他计算机上并执行的代码将因为Access数据库的连接字符串而产生错误,因为它与该计算机不匹配。 我知道如果分发项目我可以在app.config中放置连接字符串,并且每个用户都可以根据他/她的机器更改它。 但正如我给出一个安装文件如何解决这个问题。

如何轻松地允许用户更新使用的样式是XAML(UWP)中的元素

这适用于Windows 10 UWP。 我需要允许用户更新与整个应用程序中使用的元素相关联的样式的值(即允许用户更改各种文本块的字体大小,背景颜色堆栈面板等)。 我目前将所有样式都放在一个单独的文件中。 我的App.xaml如下: 我的Styles.xaml (部分)如下: 我在整个应用程序中使用这样的控件来引用这些样式: 我创建了一个设置页面(settings.xaml),其中包含用于更新各种样式设置的文本框。 但我不确定如何将这些绑定到styles.xaml文件上各种样式的设置,以便更新样式,并在用户更改值时更新引用样式的控件。 有人可以指出我正确的方向吗? 我试图用尽可能少的(或没有代码)来做到这一点。

有没有办法让UI中的GeometryDrawing交互? (或如何在WPF中加载SVG图像并与之交互)

我是WPF的新手,几天来我一直在努力想弄清楚如何与矢量图像的元素进行交互。 在我的例子中是GeometryDrawing元素。 我知道在WPF中,当需要创建交互式GUI元素时,通常会使用形状,因为它们是uielements,因此有各种各样的事件处理优点。 遗憾的是,我需要与GeometryDrawings集合进行交互,这些集合似乎不是为交互性而设计的。 我的问题: 我需要加载SVG图像并允许用户与其中的一些元素进行交互。 想象一下,加载SVG地图并使一些国家可以点击。 我管理的内容: 我设法使用一个名为SvgToXaml的非常酷的库将SVG转换为xaml。 使用此库,我可以加载给定的SVG图像并将其转换为xaml。 所以转换后我最终得到这样的东西: 我使用这个xaml作为图像源,我可以渲染图像但我还没弄清楚如何与它的元素进行交互。 我认为,因为我将SVG转换为XAML,我应该能够识别形状或几何形状并与之交互。 到目前为止,我还没有找到办法,谷歌似乎无法帮助我找到解决方案。 甚至可以与GeometryDrawing或DrawingImage元素进行交互吗? 在WPF中还有其他方法可以实现吗? 我的另一种方法是使用javascript处理HTML来解析SVG并将事件处理程序添加到我需要与之交互的元素中。 但我希望使用WPF。 非常感谢你的建议。

如何在.net中将pdf转换为位图图像?

寻找将pdf文件的指定页面转换为位图图像的解决方案。

如何将集合绑定到WPF:DataGridComboBoxColumn

不可否认我是WPF的新手,但我看了看,无法找到解决这个问题的方法。 我有一个简单的对象,如: class Item { …. public String Measure { get; set; } public String[] Measures {get; } } 我试图绑定到具有两个文本列和combobox列的DataGrid。 对于combobox列,属性Measure是当前选择并测量可能的值。 我的XAML是: 文本列显示得很好,但combobox不显示 – 根本不显示值。 绑定错误是: System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径=措施; 的DataItem = NULL; target元素是’DataGridComboBoxColumn’(HashCode = 11497055); target属性是’ItemsSource’(输入’IEnumerable’) 我该如何解决? 谢谢

如何从并发运行的任务更新进度条

我尝试将并行任务绑定到包含pprogressBars的listView。 我使用的是有限的调度程序,只允许指定的最大并行度。 到目前为止它大部分时间都可以正常工作,但有时两个任务会更新listView中的相同进度条。 以下是我的代码。 知道如何防止两个任务更新listView中的相同进度条吗? 或者如何从同时运行的任务更新进度条? public class MyClass { public ObservableCollection StatusItems { get; set; } private Object thisLock = new Object(); public int Process() //handled { StatusItems = new ObservableCollection(); for (int i = 0; i < 4; i++) // initialize progress bar collection { StatusInfo sInfo = new StatusInfo(); sInfo.ThreadID = i; […]

C#:线程安全事件

下面的实现是否是线程安全的? 如果不是我错过了什么? 我应该在某处使用volatile关键字吗? 或OnProcessingCompleted方法中的某个锁? 如果是这样,在哪里? public abstract class ProcessBase : IProcess { private readonly object completedEventLock = new object(); private event EventHandler ProcessCompleted; event EventHandler IProcess.ProcessCompleted { add { lock (completedEventLock) ProcessCompleted += value; } remove { lock (completedEventLock) ProcessCompleted -= value; } } protected void OnProcessingCompleted(ProcessCompletedEventArgs e) { EventHandler handler = ProcessCompleted; if (handler […]

在C#中创建文件(.htm)

我想知道使用c#创建一个简单的html文件的最佳方法。 它是否使用类似System.IO.File.Create东西?

使用iTextSharp将数据写入PDF效果很好,但Acrobat Reader在关闭文件时询问“是否要保存更改”

我正在使用iTextSharp 5.3.2.0将信息添加到包含W-2表单的现有PDF文件中。 一切都运行良好,PDF文件在写入浏览器的响应流时看起来很棒; 但是,当用户完成查看PDF时,系统会询问他“在关闭之前是否要将更改保存到’W2.pdf’?” 每次他从网页上查看文档。 在试图缩小问题范围时,我实际上已经删除了所有修改但问题仍在继续。 这是我的代码的简单版本,我的数据写入调用已注释掉: PdfReader pdfReader = new PdfReader(dataSource.ReportTemplate); using(MemoryStream outputStream = new MemoryStream()) using (PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream)) { //dataSource.DrawDataFields(pdfStamper); pdfStamper.FormFlattening = true; return outputStream; } 在这种情况下,“空”PDF被写入浏览器并且看起来很好,但是当我关闭Acrobat窗口时,我仍然会被问到“你想保存吗”。 此时我认为源PDF文件有问题。 但是,当我将PDF文件的原始字节发送回浏览器时,在使用下面的代码时,我不会被问到“你想保存”的问题。 byte[] bytes = File.ReadAllBytes(dataSource.ReportTemplate); using (MemoryStream outputStream = new MemoryStream()) { outputStream.Write(bytes, 0, bytes.Length); return outputStream; } 我的结论是iTextSharp在打开它并将字节写入流中的过程中对PDF做了一些“坏事”,但我是iTextSharp的新手,很容易丢失一些东西。 FWIW,这是我们正在讨论的Acobat Reader […]

LINQ:加入MySql和SQL Server表

我有相关数据存在于两个完全独立的数据库中,我需要来自这两个数据库的信息。 其中一个数据库存在于MySql服务器上,另一个存在于MS SQL Server上。 不要问为什么我们将相关数据存储在两个完全不同的服务器上,这是一个很长的故事。 从高级角度来看,我需要将MySqlTableA连接到SQLServerTableB ,执行一些复杂的限制,并可能执行一些GROUP BY和计数。 我正试图找到一种方法,使这两个数据库之间的连接相当容易。 我认为LINQ可以解决我的问题,但据我所知,我不能创建一个同时具有MySql和SQL Server源的上下文。 我可以将两个源放在不同的上下文中 – 使用Devart的LinqConnect创建MySql上下文 – 但LINQ不允许跨上下文连接。 (我尝试了这里描述的方法,但它不起作用: 模拟交叉上下文连接 – LINQ / C# ) 那么我的选择是什么? 有没有办法有效地连接这两个不同的数据库服务器上的表(虽然LINQ或其他),或者我将不得不循环并手动加入数据? 编辑: 如前所述,我已经尝试过AsQueryable()解决方法,但我仍然遇到了跨上下文exception。 这是我的代码: public static MySqlDataContext mysql = new MySqlDataContext(); public static SQLDataContext sql = new SQLDataContext(); public static void Main() { var rows = from a in mysql.tableA join […]