小编Wil*_*ers的帖子

在UAC提升上显示应用程序图标,以便从网络共享运行应用程序

我已使用应用程序清单配置我的.NET应用程序以请求管理员权限.我还使用signtool签署了程序集.一切都很好 - 当你启动应用程序时,你会得到一个漂亮的UAC提示,其中包含应用程序的名称和签名证书的名称.

但是,当我从网络共享运行应用程序时,提升提示会显示通用可执行图标,而不是我的应用程序的图标.如何让UAC提示显示我的应用程序的图标?

.net icons uac windows-vista

11
推荐指数
1
解决办法
1465
查看次数

优化绑定到DataGridView的DataTable的更新

我的应用程序中有一个表单显示一些数据.当我第一次显示Form时,我将一些数据加载到DataTable中,然后将DataTable绑定到DataGridView.我还启动了一个执行一些较慢的数据库查询的异步方法.当这些慢速查询完成时,我需要更新DataTable中的几百行,填写从较慢查询返回的值,如下所示:

foreach (DataRow row in data.Rows)
{
    SlowLoadingData slow_stuff = slow_query_results[(int)row["id"]];

    row.BeginEdit();
    row[column_one] = slow_stuff.One;
    row[column_two] = slow_stuff.Two;
    row[column_three] = slow_stuff.Three;
    row.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)

这非常慢,将UI线程挂起一分钟或更长时间,大概是因为每一行都在触发重绘.

经过一些研究,我发现了一种快速的方法.首先,将DataGridView绑定到绑定到DataTable的BindingSource,而不是直接绑定到DataTable.然后,在对DataTable进行更改时执行以下操作:

binding_source.SuspendBinding();
binding_source.RaiseListChangedEvents = false;
// foreach (DataRow in Data.Rows) ... code above
binding_source.RaiseListChangedEvents = true;
binding_source.ResumeBinding();
grid.Refresh();
Run Code Online (Sandbox Code Playgroud)

但是有一个问题,这是一个很麻烦的事情:上面的代码阻止DataGridView检测添加到DataTable的新行.添加到表中的任何新行都不会出现在网格中.如果使用箭头键将当前单元格选择移出网格的底端,网格也可能抛出异常,因为底层数据源有更多行,但网格没有创建网格行来显示它们.

那么,我可以看到两种可能的解决方案:

  1. 在更改底层DataTable时是否有更好的方法来抑制绑定更新?

  2. 是否有一种简单的方法可以告诉DataGridView正常刷新其网格行集合以匹配基础DataTable行的数量?(注意:我尝试过调用BindingSource.ResetBindings,但是如果从DataTable中删除了行,它似乎会触发更多异常!)

.net c# datatable datagridview

9
推荐指数
2
解决办法
2万
查看次数

在 Python 中操作数据库结果集的最佳实践?

我正在编写一个简单的 Python Web 应用程序,它由几页为 iPhone 格式化的业务数据组成。我对 Python 编程很熟悉,但我对 Python 的“习惯用法”不太熟悉,尤其是关于类和对象。Python 的面向对象设计与我使用过的其他语言有所不同。因此,即使我的应用程序正在运行,我还是很好奇是否有更好的方法来实现我的目标。

细节:人们通常如何在 Python 中实现请求-转换-渲染数据库工作流?目前,我正在使用 pyodbc 获取数据,将结果复制到对象的属性中,使用这些对象的列表执行一些计算和合并,然后呈现对象列表中的输出。(下面的示例代码,SQL 查询已编辑。)这正常吗?有没有更好的办法?由于我对 Python 的相对无知,我偶然发现了任何特定的“陷阱”吗?我特别关心我是如何使用空的“Record”类实现行列表的。

class Record(object):
    pass

def calculate_pnl(records, node_prices):
    for record in records:
        try:
            # fill RT and DA prices from the hash retrieved above
            if hasattr(record, 'sink') and record.sink:
                record.da = node_prices[record.sink][0] - node_prices[record.id][0]
                record.rt = node_prices[record.sink][1] - node_prices[record.id][1]
            else:
                record.da = node_prices[record.id][0]
                record.rt = node_prices[record.id][1]

            # calculate dependent values: RT-DA and PNL
            record.rtda = record.rt - record.da
            record.pnl = record.rtda * record.mw …
Run Code Online (Sandbox Code Playgroud)

python database

6
推荐指数
1
解决办法
3325
查看次数

如何#include在C++/CLI项目中使用nullptr的第三方本机C++标头

我正在尝试编写一个托管C++(又名C++/CLI)库,该库链接到第三方本机C++库.第三方库的头文件包含使用该nullptr关键字的构造函数定义.我的托管项目无法编译,因为托管编译器定义nullptr为托管空引用,而第三方使用它来表示本机/未托管空指针.如何在不修改第三方库的头文件的情况下解决此问题?

有关nullptrvs的参考__nullptr,请参阅:https://msdn.microsoft.com/en-us/library/4ex65770.aspx

c++ c++-cli nullptr

0
推荐指数
1
解决办法
173
查看次数

标签 统计

.net ×2

c# ×1

c++ ×1

c++-cli ×1

database ×1

datagridview ×1

datatable ×1

icons ×1

nullptr ×1

python ×1

uac ×1

windows-vista ×1