小编Pom*_*oma的帖子

如何确定我的应用程序是否处于活动状态(具有焦点)

有没有办法判断我的应用程序是否处于活动状态,即它的任何窗口都有.IsActive = true?

我正在编写Messenger应用程序,并希望它在任务栏中闪烁,当它处于非活动状态并且新消息到达时.

.net c# wpf

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

如何在不拉图像的情况下在 docker hub 上添加标签别名

当我在 CI 中构建映像时,我会使用唯一的 SHA 标签推送它。然后当我将它部署到生产中时,我想更改:latest别名以指向相同的图像,如下所示:

docker pull org/foo:34f8a342
docker tag org/foo:34f8a342 org/foo:latest
docker push org/foo:latest
Run Code Online (Sandbox Code Playgroud)

现在我想避免拉这个图像。问题是部署脚本的容器与用于构建它的容器不同,所以我在本地没有这个图像。有没有办法在 docker hub 上添加标签别名,而无需在本地拥有此图像?

docker dockerhub

11
推荐指数
3
解决办法
2867
查看次数

如何从外部文件中读取属性值?

我在构建期间自动生成了AssemblyInfo.cs文件.这是.csproj文件的一部分:

<PropertyGroup>
    <Major>2</Major>
    <Minor>3</Minor>
    <Build>0</Build>
    <Revision>0</Revision>
</PropertyGroup>
<Target Name="BeforeBuild">
    <SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="C:\Program Files\VisualSVN Server\bin">
        <Output TaskParameter="Revision" PropertyName="Revision" />
    </SvnVersion>
    <AssemblyInfo CodeLanguage="CS" 
                  OutputFile="$(MSBuildProjectDirectory)\Properties\VersionInfo.cs" 
                  AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
                  AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"/>
</Target>
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在.csproj文件之外指定MajorMinor属性,所以每次我想要更改版本时我都不必卸载项目.我需要从项目内部的特殊文本文件加载它们或以某种方式在项目属性对话框中设置它们.有什么建议?

msbuild build-process build csproj

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

如何更改TabItem的标题字体而不更改内容的字体?

如何更改TabItem的标题中的字体而不更改内容的字体?当我FontSizeTabItem其中设置属性时也会更改TextBlocks 上的FontSize .

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="350" Width="525">
    <TabControl>
        <TabItem Header="item1">
            <TextBlock Text="test" Margin="20" />
        </TabItem>
        <TabItem Header="item2" FontSize="20">
            <TextBlock Text="test" Margin="20" />
        </TabItem>
    </TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

如何动态加载和卸载本机DLL文件?

我有一个错误的第三方DLL文件,在执行一段时间后,开始抛出访问冲突异常.当发生这种情况时,我想重新加载该DLL文件.我怎么做?

.net c# pinvoke

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

每次在财产获取者中返回新的ICommand是不是很糟糕?

编写这段代码是否值得:

RelayCommand _saveCommand;
public ICommand SaveCommand
{
    get
    {
        if (_saveCommand == null)
        {
            _saveCommand = new RelayCommand(this.Save);
        }
        return _saveCommand;
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是每次只返回新对象:

public ICommand SaveCommand
{
    get { return new RelayCommand(this.Save); }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,很少使用命令getter,而RelayCommand的构造函数非常快.编写更长的代码会更好吗?

.net c# wpf mvvm

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

IsMouseOver对DockPanel中的某些元素返回false

我试图检测鼠标何时进入VS 2017标题栏,但我注意到这一点MouseEnter并且MouseLeave事件无法正常工作.仅当鼠标进入下面屏幕截图中绿色矩形所示的子控件时,才会触发事件.

标题栏中DockPanel包含一些元素.我已设置其背景以SolidColorBrush(Colors.Red)确保命中测试正确运行.当鼠标悬停在绿色矩形中的元素时,IsMouseOver正确返回true,但在其他任何地方都是false.对于菜单栏,IsMouseOverMouseEnterMouseLeave事件正常工作.有什么不对吗?

截图

更新2:标题栏可能被标记为非客户区域,这就是导致此问题的原因

更新:

这是主VS窗口的Visual Tree:

在此输入图像描述

反编译MainWindowTitleBar类:

using Microsoft.VisualStudio.PlatformUI.Shell.Controls;
using Microsoft.VisualStudio.Shell;
using System;
using System.Windows;
using System.Windows.Automation.Peers;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;

namespace Microsoft.VisualStudio.PlatformUI
{
    public sealed class MainWindowTitleBar : Border, INonClientArea
    {
        protected override HitTestResult HitTestCore(PointHitTestParameters hitTestParameters)
        {
            return new PointHitTestResult(this, hitTestParameters.HitPoint);
        }

        int INonClientArea.HitTest(Point point)
        {
            return 2;
        }

        protected override AutomationPeer OnCreateAutomationPeer()
        {
            return …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf visual-studio-extensions visual-studio-2017

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

如何使用Socket接收HTTP消息

我正在Socket为我的网络客户端使用课程.我无法使用,HttpWebRequest因为它不支持socks代理.所以我必须自己解析标题并处理分块编码.对我来说最困难的是确定内容的长度,所以我必须逐字节地读取它.首先,我必须使用ReadByte()查找最后一个标题("\ r \n\r \n"组合),然后检查正文是否具有传输编码.如果它,我必须阅读块的大小等:

public void ParseHeaders(Stream stream)
{
    while (true)
    {
        var lineBuffer = new List<byte>();
        while (true)
        {
            int b = stream.ReadByte();
            if (b == -1) return;
            if (b == 10) break;
            if (b != 13) lineBuffer.Add((byte)b);
        }
        string line = Encoding.ASCII.GetString(lineBuffer.ToArray());
        if (line.Length == 0) break;
        int pos = line.IndexOf(": ");
        if (pos == -1) throw  new VkException("Incorrect header format");
        string key = line.Substring(0, pos);
        string value = line.Substring(pos + 2); …
Run Code Online (Sandbox Code Playgroud)

.net c# sockets http

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

如何在WebBrowser控件中执行自定义JavaScript?

我想将一些样式命令应用于WebBrowser控件中的特定网站.最好的方法是调用javascript(我希望这个样式可以编辑,使用javascript很容易).我知道我可以使用webBrowser1.Navigate("javascript: alert('hi'); void(0);");但是webBrowser接受的最大URL长度是502.如何执行更长的脚本?或者也许有办法将我的CSS附加到网络文档?

PS我无法编辑文档的文本属性,因为它会打破这个网站中的脚本,我需要工作副本,但只是略微调整了一下.

.net javascript c# webbrowser-control winforms

8
推荐指数
0
解决办法
3万
查看次数

流畅地调用await而不使用括号

有没有办法重构这条线

var result = (await Foo()).Bar()
Run Code Online (Sandbox Code Playgroud)

这样它就不会使用括号,也不会将等待结果分配给临时变量?

我正在尝试构建一个支持长时间操作的流畅框架,当您需要将 wait 括在括号中时,现实世界的代码会变得非常丑陋:

var result = (await collection
    .TransformElements()
    .FetchData())
    .ProcessResults()
    .Aggregate();
Run Code Online (Sandbox Code Playgroud)

.net c#

8
推荐指数
0
解决办法
969
查看次数