小编CJx*_*JxD的帖子

带文本和值的C#ComboBox

可能重复:
C#Winforms Combobox标签和值

如何在ComboBox中存储显示值和实际值?

即,ComboBox显示:

  • 摧毁世界
  • 火弹弓
  • 召唤克苏鲁

但检索到的值是:

  • DW
  • SS
  • SC

我希望能够以与此类似的方式检索所选项的值:

string selectedValue = combobox1.SelectedValue
Run Code Online (Sandbox Code Playgroud)

更新代码以回答答案:

Dictionary<string, string> filterItems = new Dictionary<string, string>
{
    {"Destroy World", "dw"},
    {"Fire Slingshot", "fs"},
    {"Summon Cthulu", "sc"},
};
this.options_filterby.DataSource = new BindingSource(filterItems, null);
this.options_filterby.DisplayMember = "Key";
this.options_filterby.ValueMember = "Value";
Run Code Online (Sandbox Code Playgroud)

现在由于某种原因,虽然DisplayMembers绝对正常,但ValueMembers返回字典对象.甚至更奇怪,过了一会儿,最终ValueMembers将按预期返回字符串.

private void options_filterby_SelectedIndexChanged(object sender, EventArgs e)
{
    MessageBox.Show(options_filterby.SelectedValue.ToString());
}
Run Code Online (Sandbox Code Playgroud)

这会返回前几次我更改ComboBox的选定项目的字典,但最终会根据需要返回字符串.

更新:已修复(由于问题已关闭,无法添加为解决方案)

针对上述问题,修复方法是在DataSource 之前设置DisplayMember和ValueMember属性.我认为这是一个错误.代码应为:

this.options_filterby.DisplayMember = "Key";
this.options_filterby.ValueMember = "Value";
this.options_filterby.DataSource = new BindingSource(filterItems, null);
Run Code Online (Sandbox Code Playgroud)

c# combobox winforms

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

选择要在pull-request中发送的提交

我在GitHub上分叉了一个项目.作为一个纯Java源代码,我必须调整它以使其成为一个eclipse项目,然后才开始工作.我做了3次提交来反映这些变化.

然后我完成了对实际程序的调整,我想向请求这些更改的开发人员发送一个pull-request.

我的提交历史如下:

  • 提交#1,#3和#4是基于eclipse的,应该发送.
  • #2,#5,#6,#7和#8是源相关的,应该发送.

如何发送省略#1,#3和#4的拉取请求?

git github pull-request

13
推荐指数
1
解决办法
7180
查看次数

编译SQLite for Windows(64位)

我有MinGW,我希望将SQLite合并源编译成64位dll.我对这种编辑很新,到目前为止我的努力导致了失败.(我首先开始使用autoconf合并并在Linux上使用configure和make工具.但显然这对于​​Windows二进制文件永远不会起作用.)

无论如何,我被告知我需要以下预处理器定义:

以下是我用于64位版本构建的编译器预处理器定义:

  • WIN64 NDEBUG
  • _视窗
  • _USRDLL
  • NO_TCL
  • _CRT_SECURE_NO_DEPRECATE
  • THREADSAFE = 1
  • TEMP_STORE = 1
  • SQLITE_MAX_EXPR_DEPTH = 0

以下是我用于32位版本构建的编译器预处理器定义:

  • WIN32
  • NDEBUG
  • _视窗
  • _USRDLL
  • NO_TCL
  • _CRT_SECURE_NO_DEPRECATE
  • THREADSAFE = 1
  • TEMP_STORE = 1
  • SQLITE_MAX_EXPR_DEPTH = 0

我不知道把它放在哪里.我最终做了一个有根据的猜测,做了一个名为sqlite3w64.h的新文件(为了整洁)并粘贴在下面:

#define WIN64 NDEBUG
#define _WINDOWS
#define _USRDLL
#define NO_TCL
#define _CRT_SECURE_NO_DEPRECATE
#define THREADSAFE 1
#define TEMP_STORE 1
#define SQLITE_MAX_EXPR_DEPTH 0
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令编译源代码:

gcc sqlitew64.h sqlite3.h sqlite3ext.h shell.c sqlite3.c -o sqlite_x64.dll
Run Code Online (Sandbox Code Playgroud)

结果是一个733KB的DLL文件.太好了!它真的有效吗?它搞砸了 - 我得到了一个BadImageFormatException.然后我也尝试使用相同的方法进行x86编译.再一次,我得到了一个733KB的DLL文件(这很奇怪?)再一次,我得到了一个BadImageFormatException.

救命.

更新

改为使用以下命令:

gcc -shared -DWIN64 -DNDEBUG -D_WINDOWS -D_USRDLL -DNO_TCL -D_CRT_SECURE_NO_DEPRECATE …
Run Code Online (Sandbox Code Playgroud)

c windows sqlite 64-bit gcc

10
推荐指数
1
解决办法
6649
查看次数

尝试在目标设备上运行交叉编译的可执行文件失败:没有这样的文件或目录

我陷入了不那么阳光明媚的交叉编译世界.

我正在尝试为我的BeagleBone Black(运行TI Cortex-A8处理器)编译一个简单的hello world应用程序.

首先,我在x86上编译并成功运行了hello world应用程序 gcc

然后我将编译设置更改为以下内容:

arm-linux-gnueabi-gcc -c -O0 -g3 -Wall main.c -o bin/obj/main.o
arm-linux-gnueabi-gcc bin/obj/main.o -o bin/hello_world
Run Code Online (Sandbox Code Playgroud)

我通过SCP将文件传输到BeagleBone,并设置了可执行权限 chmod +x hello_world

在运行它(./hello_world)时,我唯一的回答是:

-bash: ./hello_world: No such file or directory
Run Code Online (Sandbox Code Playgroud)

正如我所期望file/sbin/init那样匹配的输出:

$ file hello_world
hello_world: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x24b659b7a41fe043a6f4649d4ebfb5e692ebf0c7, not stripped
$ file /sbin/init
/sbin/init: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), …
Run Code Online (Sandbox Code Playgroud)

c c++ arm cross-compiling beagleboneblack

10
推荐指数
1
解决办法
6961
查看次数

使用extract_image_patches后重建图像

我有一个自动编码器,它将图像作为输入并生成一个新图像作为输出.

输入图像(1x1024x1024x3)在送入网络之前被分割为补丁(1024x32x32x3).

一旦我有输出,也有一批大小为1024x32x32x3的补丁,我希望能够重建1024x1024x3图像.我以为我只是简单地重塑了这个,但这就是发生的事情.

首先,Tensorflow读取的图像: 输入图像

我用以下代码修补了图像

patch_size = [1, 32, 32, 1]
patches = tf.extract_image_patches([image],
    patch_size, patch_size, [1, 1, 1, 1], 'VALID')
patches = tf.reshape(patches, [1024, 32, 32, 3])
Run Code Online (Sandbox Code Playgroud)

以下是此图片中的几个补丁:

修补输入#168 修补输入#169

但是,当我将这个补丁数据重新塑造成一个形状为梨状的图像时.

reconstructed = tf.reshape(patches, [1, 1024, 1024, 3])
converted = tf.image.convert_image_dtype(reconstructed, tf.uint8)
encoded = tf.image.encode_png(converted)
Run Code Online (Sandbox Code Playgroud)

重建输出

在该示例中,在修补和重建之间没有进行任何处理.我已经制作了一个可用于测试此行为的代码版本.要使用它,请运行以下命令:

echo "/path/to/test-image.png" > inputs.txt
mkdir images
python3 image_test.py inputs.txt images
Run Code Online (Sandbox Code Playgroud)

代码将为每个输入图像中的1024个补丁中的每个补丁创建一个输入图像,一个补丁图像和一个输出图像,因此如果您只关心保存所有补丁,请注释掉创建输入和输出图像的行.

有人请解释发生了什么:(

python tensorflow

10
推荐指数
2
解决办法
4815
查看次数

9
推荐指数
1
解决办法
7100
查看次数

Files.createDirectory():FileAlreadyExistsException

使用Java 7的Files类我有一个看似奇怪的问题.我想在开始编写之前确保我的目录和文件存在以避免a FileNotFoundException,并且根据Javadocs,createDirectory检查"文件是否存在以及如果不存在则创建目录"

因此,如果它首先检查,当目录已存在时,为什么我遇到以下代码的问题?

private void writeFile() throws IOException {
    // Make sure parent directory and file are ready
    File file = "mydirectory/my.file";
    File parent = file.getParentFile();
    if (parent != null)
        Files.createDirectory(parent.toPath()); // Why do I get FileAlreadyExistsException? =[
    Files.createFile(file.toPath());

    // Do some file writing stuff!
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以只是'如果不存在文件然后创建'的事情,但我认为这个方法的重点是为我照顾所有这些!

例外数据:

java.nio.file.FileAlreadyExistsException: mydirectory
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.createDirectory(Unknown Source)
at java.nio.file.Files.createDirectory(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

java file-io java-7

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

使用`TRANSPORT_CELLULAR`时,ConnectionManager不提供网络回调

我试图在手机的蜂窝数据连接发生变化时接收回叫.我基本上需要知道它何时关闭以及何时打开.

我用的做到这一点TelephonyManagerPhoneStateListener.LISTEN_SERVICE_STATE,但现在我想用ConnectionManagerregisterNetworkCallback.

以下代码示例已在Android Emulator(API 28),A HUAWEI P20 Lite(API 26),HTC One M8(API 23)和Motorola G6(API 26)上进行了尝试.当我打开/关闭移动数据或激活飞行模式时,他们都没有调用任何回调.

人们说这应该有效.

    NetworkRequest.Builder builder = new NetworkRequest.Builder();

    builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

    connManager.registerNetworkCallback(builder.build(), new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            Log.d("Conman Test", "onAvailable");
        }

        @Override
        public void onLost(Network network) {
            Log.d("Conman Test", "onLost");
        }

        @Override
        public void onUnavailable() {
            Log.d("Conman Test", "onUnavailable");
        }

        @Override
        public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
            Log.d("Conman Test", "onCapabilitiesChanged");
        }

        @Override
        public void onLinkPropertiesChanged(Network …
Run Code Online (Sandbox Code Playgroud)

android

8
推荐指数
1
解决办法
644
查看次数

不再能够在Maven发布中使用bundleReleaseAar

将Gradle升级到5.1.1后,我发现无法将其bundleReleaseAar作为工件添加到我的MavenPublication中。这是我的build.gradle的相关代码段:

apply plugin: 'maven-publish'

publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version libraryVersion
            artifactId libraryArtifactId

            artifact bundleReleaseAar
            //artifact sourcesJar
            //artifact packageJavadoc
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

失败的原因是:

Could not get unknown property 'bundleReleaseAar' for object of type org.gradle.api.publish.maven.internal.publication.DefaultMavenPublication.

但是,我可以看到bundleReleaseAar在运行时确实存在./gradlew tasks,并且可以很好地执行该任务。

是什么阻止了它现在被用作我的部署中的工件?

android gradle android-gradle-plugin

8
推荐指数
1
解决办法
902
查看次数

泛型接口方法签名"不正确"

我很难想到这个标题,所以请原谅我.

我有一个使用以下方法的接口:

public interface Algorithm<E,F> {
    public Set<? extends Algorithm<E,F>> map(int numPartitions);
    public F reduce(Set<? extends Algorithm<E,F>> partitions);
}
Run Code Online (Sandbox Code Playgroud)

以及Algorithm使用以下方法实现的类:

public class LinearSearch<T> implements Algorithm<List<T>, Integer> {
    @Override
    public Set<LinearSearch<T>> map(int numPartitions) {
        return null;
    }

    @Override
    public Integer reduce(Set<LinearSearch<T>> partitions) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在奇怪的是Eclipse正在抱怨第二种方法,reduce.

The method reduce(Set<LinearSearch<T>>) of type LinearSearch<T> must override or implement a supertype method.

尽管map方法很好,但这是事实.那我哪里错了?

java generics inheritance

7
推荐指数
1
解决办法
586
查看次数