小编byt*_*e77的帖子

ImageList:32位图像质量下降

我使用ImageListTreeViewListView.我首先将图像质量设置为32位,然后添加半透明图像.质量看起来不错,但在编写,编译和执行应用程序几分钟后,质量看起来很糟糕.

看截图: 在此输入图像描述

使用过的属性

ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent
Run Code Online (Sandbox Code Playgroud)

像素背后有黑色像素,半透明但不完全透明.

重新添加所有图像会恢复原始质量,但几分钟后,它就会显示在屏幕截图的右侧.

c# graphics imagelist winforms

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

使用Caliburn Micro和Ninject设置依赖注入

我正在尝试使用Caliburn Micro和Ninject框架在新的WPF项目中设置依赖注入.不幸的是我没有成功:(互联网上有一些例子实现了一个通用的Bootstrap,但对我来说,通用的Bootstrap类是不可用的,因为所有这些例子都至少3年了,我猜它们已经被弃用了......

我试过的是以下内容:

public class CbmBootstrapper : BootstrapperBase
{
    private IKernel kernel;

    protected override void Configure()
    {
        this.kernel = new StandardKernel();

        this.kernel.Bind<IAppViewModel>().To<AppViewModel>();
    }
}
Run Code Online (Sandbox Code Playgroud)

并在App.xaml中

<Application x:Class="CBMExample.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:local="clr-namespace:CBMExample"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
            <local:CbmBootstrapper x:Key="bootstrapper" />
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

我是WPF和Ninject的新手.你能告诉我我要改变什么,以便在应用程序启动时,带有相应ViewModel(AppViewModel)的View(AppView)被加载吗?

您是否知道有关使用和设置Ninject与Caliburn Micro的最新教程?

c# wpf dependency-injection ninject caliburn.micro

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

即使其中一个查询失败,pdo也会在多个查询中返回true

这里的深层问题是知道PDO何时返回true和false.

文档说如果失败成功为假则为true.那么MySQL的成功和失败是什么?

这是我当前的问题:我在一个PDO执行中将所有查询一起发送,即使foreign_id不应该为NULL,它也会返回true:

SET @id := NULL; SELECT id INTO @id FROM ? WHERE id = ? AND to_user = ?;
INSERT INTO hidden_notifications(table_name, foreign_id) VALUES (?, NULL);
Run Code Online (Sandbox Code Playgroud)

但如果我只发送

INSERT INTO hidden_notifications(table_name, foreign_id) VALUES (?, NULL);
Run Code Online (Sandbox Code Playgroud)

false被正确返回.

NB NULL仅用于测试目的,通常由@id替换.

我进一步尝试了解PDO的行为:

INSERT INTO hidden_notifications(table_name, foreign_id) VALUES (?, ?);
INSERT INTO hidden_notifications(table_name, foreign_id) VALUES (?, NULL);
Run Code Online (Sandbox Code Playgroud)

这里第一个插入是正确的,第二个插入没有,PDO返回true ..我开始认为只有一个查询成功时PDO返回true.

你可以向我解释一下,所以我知道如何处理我的数据库.因为我的所有计划都基于这个原则:

execute('BEGIN')
execute(myquery) // which can be many selections, insertions updates together in one string
if succed execute('COMMIT')
else execute('ROLLBACK')
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

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

无法将文本文件中的土耳其字符读取到字符串数组中

我试图在土耳其语中进行某种句子处理,我正在使用文本文件作为数据库.但我无法从文本文件中读取土耳其语字符,因为我无法正确处理数据.

string[] Tempdatabase = File.ReadAllLines(@"C:\Users\dialogs.txt");
textBox1.Text = Tempdatabase[5];
Run Code Online (Sandbox Code Playgroud)

输出:

c# string character-encoding text-files

6
推荐指数
2
解决办法
8547
查看次数

滚动事件和绘制事件之间存在滞后,也许介于两者之间

我在表单上有一个简单的面板,我正在使用 AutoScrollMinSize 和 AutoScroll 在面板上获取一些滚动条,一切正常。

我还有一个滚动事件,我用它来使整个面板区域无效,因为事实上它似乎只使左/右、上/下滚动时所需的位无效。除此之外,我使用与面板大小相同的 BufferedGraphics,然后执行 .Render(e.Graphics),因为我希望它在整个面板上绘制,就好像滚动条不存在一样。

现在,我遇到的问题是,滚动和绘制内容时似乎存在视觉上的滞后,我认为这是因为在滚动事件之前有一个我不熟悉的额外绘制/设置阶段调用或在该事件与调用的 Paint 事件之间进行。

如果我在绘制方法中有一个无效面板,您不会看到问题,但这更多地与多次调用绘制事件隐藏问题有关。

所以我认为我理解它的方式是,当你滚动时,引擎盖下的某个东西会做一个大矩形 blit 移动已经存在的内容,然后调用需要填充区域的矩形 invalidate 。

如果是这种情况,是否有任何围绕此问题的方法,例如抑制此阶段或我缺少的一些其他设置以消除跟上滞后?

PS:我还重写了 OnPaintBackground 方法,它是一个空存根。

.net c# panel onpaint autoscroll

5
推荐指数
1
解决办法
2128
查看次数

关于java String文字池和String的连接的混淆

所有,我在编写下面的代码时遇到了问题

String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello)); 
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
Run Code Online (Sandbox Code Playgroud)

然后我运行我的代码,控制台打印这个

str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.为什么第二次打印TRUE但第一次打印FALSE?在我理解String文字池时,当一个字符串被定义并且JVM将检查池是否包含该字符串时,如果没有,则将该字符串放入池中.
在我的代码中,变量hello存在于字符串池中," Helo "和" lo "也存在于池中,我的问题是

  1. 如果池中存在" Helo "和" lo " 串联的结果.
  2. 关于str5和str10s的定义有什么区别,为什么它们不是"=="?str5和str10是否指向字符串池中的不同" Hello "?("=="似乎表示引用是同一个对象)

我的jdk版本:1.6.0_29
我的IDE:Intellij Idea 11.2

有人可以指出来吗?非常感谢你

java string

5
推荐指数
1
解决办法
1683
查看次数

C++:实现自定义Main函数

WinMain是一个"替换"默认主入口点'main'的函数.

然后,用户可以定义其主要入口点

int WINAPI WinMain(...) { }
Run Code Online (Sandbox Code Playgroud)


这种封装是如何完成的?

嗯,最有可能的是,在某些时候它看起来像这样:

int main() // This must be defined somewhere in windows.h
{
    return WinMain(...);
}
Run Code Online (Sandbox Code Playgroud)

问题:如何完成我自己的封装,然后调用WinMain?注意:我创建的库是一个DLL,所以它看起来像这样:

// This is the minimal code for the application which uses 'MyLibrary'
#pragma comment(lib, "MyLibrary.lib")
include "MyLibrary.h"

void Main(MyCustomParameter *params)
{
    // Write user code here
}
Run Code Online (Sandbox Code Playgroud)

但问题是,DLL不"知道"该Main()函数,因此会抛出"未解析的外部符号"编译错误.那么如何将其封装起来呢?

c++ dll dynamic-library

5
推荐指数
1
解决办法
2115
查看次数

对列表中的每个其他项目执行对列表中每个项目的操作,并使用排除项

我有一个没有重复的数据列表.对于这个例子,我会说我的清单是

List<string> list1 = new List<string>() { "A", "B", "C", "D" };
Run Code Online (Sandbox Code Playgroud)

我想对列表中的每个项目对列表中的每个其他项目执行我的操作,除非我已经对它们执行了操作(AB和BA)或者它们是相同的(AA).

例如.

A against B
A against C
A against D
B against C
B against D
C against D
Run Code Online (Sandbox Code Playgroud)

现在这很简单,但我的列表非常大,这个过程可能非常耗时.另外,对于我拥有的数据,我不需要对匹配数据运行操作,或者操作是否已经运行

例如.

A against A - Skip
A against B - Good
A against C - Good
A against D - Good
B against A - Skip (we already did A against B)
B against B - Skip
B against C - Good
B against D - Good …
Run Code Online (Sandbox Code Playgroud)

c# list

5
推荐指数
2
解决办法
2099
查看次数

如何在JS中创建开关比较器?

有没有办法像这样创建一个开关比较器?

switch (item) {
    case (item<= 10):
        money += 25;
        $('#money').html(money);
        break;
    case (item > 10 && item <= 20):
        money += 50;
        $('#money').html(money);
        break;
}
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery

5
推荐指数
1
解决办法
71
查看次数

将CIDR表示法转换为IP范围

我们正在使用GeoLite2数据库来实现IP - >国家/地区查找.出于性能原因,我们要导入CSV并将其转换为我们自己的格式.

CSV表示如下:

5.39.40.96/27,3017382,3017382,,0,0
5.39.40.128/28,3017382,3017382,,0,0
5.39.40.144/28,2635167,3017382,,0,0
5.39.40.160/27,3017382,3017382,,0,0
5.39.40.192/26,3017382,3017382,,0,0
5.39.41.0/25,3017382,3017382,,0,0
5.39.41.128/26,3017382,3017382,,0,0
5.39.41.192/26,2635167,3017382,,0,0
5.39.42.0/24,3017382,3017382,,0,0
5.39.43.0/25,3017382,3017382,,0,0
Run Code Online (Sandbox Code Playgroud)

所以我们需要将CIDR表示法(例如5.39.40.96/27 :)转换为IP地址范围.(从IP到IP)

如何在C#中完成?

注意:这不是这个问题的重复,因为我问的是C#实现而不是Java.

.net c# ip-address cidr

5
推荐指数
1
解决办法
6418
查看次数