小编Nic*_*ick的帖子

MouseLeftButtonUp不会触发

我有一个 Button

<Button>
    <Button.Template>
        <ControlTemplate>
            <StackPanel>
                <Image Source="share.png" 
                       MouseLeftButtonUp="Image_MouseLeftButtonUp"
                       MouseLeftButtonDown="Image_MouseLeftButtonDown" />
            </StackPanel>
        </ControlTemplate>
    </Button.Template>
</Button>
Run Code Online (Sandbox Code Playgroud)

但问题是,与MouseLeftButtonDown不同,事件MouseLeftButtonUp不会触发.为什么?我该如何解决?谢谢.

c# wpf events button mouseevent

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

气球弹出 WPF

我需要显示一个气球弹出窗口。WPF 中是否有针对此类工作的控件?类似于以下内容:

<BalloonPopup>
   <StackPanel>
      <Button/>
      . . .
   </StackPanel>
</BalloonPopup>
Run Code Online (Sandbox Code Playgroud)

这是可能的结果:

在此处输入图片说明

c# wpf popup tooltip popup-balloons

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

Marshal.SizeOf结构返回过多的数字

我有以下结构

[StructLayout(LayoutKind.Sequential)]
public struct SFHeader
{

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]
    public string FileName;

    public int Offset;

    public short Size;

    public byte Flags;

    public byte Source;


    public long LastWriteTime;


    public byte[] GetBytes()
    {
        int size = Marshal.SizeOf(this);
        var buffer = new byte[size];
        IntPtr ptr = Marshal.AllocHGlobal(size);

        Marshal.StructureToPtr(this, ptr, true);
        Marshal.Copy(ptr, buffer, 0, size);
        Marshal.FreeHGlobal(ptr);

        return buffer;
    }


    public static SFHeader FromBytes(byte[] buffer)
    {
        var str = new SFHeader();
        int size = Marshal.SizeOf(str);

        IntPtr ptr = Marshal.AllocHGlobal(size);
        Marshal.Copy(buffer, 0, ptr, size);
        str …
Run Code Online (Sandbox Code Playgroud)

c# struct sizeof

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

我应该使用不同的对象来锁定每个属性吗?

我有一个班级及其属性; 不同的线程经常访问这些属性.

为每个属性使用相同的对象(对于lock语句)更有效吗?

private readonly object padlock = new object();

private string name;
private int age;

public string Name
{
   get
   {
      lock(padlock)
         return name;
   }

   set
   {
      lock(padlock)
         name = value;
   }
}

public int Age
{
   get
   {
      lock(padlock)
         return age;
   }

   set
   {
      lock(padlock)
         age = value;
   }
}
Run Code Online (Sandbox Code Playgroud)

或者为每个属性使用不同的对象?

private readonly object padlockName = new object();
private readonly object padlockAge = new object();

private string name;
private int age;

public string Name
{
   get …
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking

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

ListViewItem边框 - 紧凑框架

我有一个ListView,我添加为Items一些ListViewItem秒.该View物业将设置为Details.当ListView在显示ListViewItem■找(从另一个分开一个项目顶部和底部线)的任何边界.

如何为所有项目添加边框?

一个例子:

在此输入图像描述

c# listview compact-framework border listviewitem

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

如何在触摸屏中滚动ListView

我有一个应用程序ListView.在桌面模式下,我没有任何问题,但是当我将此应用程序与触摸屏一起使用时,存在与ListView垂直滚动相关的问题.事实上,当我触摸屏幕时,我ListView选择了此列表中的项目,但是当我上下移动手指时,不是滚动我的列表,唯一发生的事情是选择我手指下的项目(选择变化).

我怎么解决这个问题?

c# wpf listview scroll touchscreen

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

局部变量范围错误 - foreach 循环

我有以下代码:

if (Current == false)
{
    foreach (var visual in visuals)
        visual.IsSelected = value;
}

Visual visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

当我编译时,我有这个错误:

不能在此范围内声明名为“visual”的局部变量,因为它会给“visual”赋予不同的含义,“visual”已在“子”范围中用于表示其他内容

另外,如果我不声明visual变量,那就是我替换:

Visual visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

和:

visual = visuals[currentIndex];
Run Code Online (Sandbox Code Playgroud)

错误如下:

当前上下文中不存在名称“visual”

为什么会有这种行为?

c# foreach scope

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

解析一个浮点数的C字符串

我有一个C字符串,其中包含由逗号和空格分隔的浮点数列表.每对数字由一个(或多个)空格分隔,并表示x和y字段由逗号分隔的点(并且可选地由空格分隔).

" 10,9 2.5, 3   4 ,150.32 "
Run Code Online (Sandbox Code Playgroud)

我需要解析这个字符串以填充列表Point(x, y).
以下是我目前的实施:

const char* strPoints = getString();
std::istringstream sstream(strPoints);

float x, y;
char comma;

while (sstream >> x >> comma >> y)
{
   myList.push(Point(x, y));
}
Run Code Online (Sandbox Code Playgroud)

由于我需要解析很多(最多500,000)这些字符串,我想知道是否有更快的解决方案.

c++ string parsing

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

Visual Studio - 代码格式(花括号)

我在Visual Studio 2013代码格式方面遇到了麻烦。特别是我有以下问题:当我剪切和粘贴一些 C++/C# 代码时,它被重新格式化如下:

int main() {
  ...
}
Run Code Online (Sandbox Code Playgroud)

虽然我更喜欢以下缩进(请注意左花括号的位置):

int main()
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

在哪里可以找到正确的缩进设置?

coding-style indentation visual-studio

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

Rcpp 和移动语义

我实现了一个算法,C++它返回一个巨大的元素数组作为输出。现在,我想实现一个包装器,Rcpp以便我能够使用R.

我在 Makevars 文件中指定了以下设置:

PKG_CXXFLAGS = -std=c++11

这样我就可以使用 C++11 版本了。

// [[Rcpp::export]]
NumericMatrix compute(int width, int height)
{
  vector<data_t> weights(width * height);
  compute_weights(weights);

  NumericMatrix mat(height, width);
  copy(begin(weights), end(weights), mat.begin());

  return mat;
}
Run Code Online (Sandbox Code Playgroud)

如果函数返回时 NumericMatrix 被移动,则上述包装函数仍然有效,否则将创建一个新对象。

是否Rcpp利用移动语义?如果没有,是否有任何解决方法可以避免构建副本?

c++ move-semantics rcpp c++11

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