小编mar*_*000的帖子

如何在WPF中的ListBox中捕获鼠标单击项?

我希望在ListBox中的某个项被鼠标单击时得到通知,无论它是否已被选中.

我搜索并发现了这个:(http://kevin-berridge.blogspot.com/2008/06/wpf-listboxitem-double-click.html查看评论)

private void AddDoubleClickEventStyle(ListBox listBox, MouseButtonEventHandler mouseButtonEventHandler)
{
    if (listBox.ItemContainerStyle == null)
        listBox.ItemContainerStyle = new Style(typeof(ListBoxItem));
    listBox.ItemContainerStyle.Setters.Add(new EventSetter()
    {
        Event = MouseDoubleClickEvent,
        Handler = mouseButtonEventHandler
    });
}

//Usage:
AddDoubleClickEventStyle(listView1, new MouseButtonEventHandler(listView1_MouseDoubleClick));
Run Code Online (Sandbox Code Playgroud)

这是有效的,但它是为了它DoubleClick.虽然我不能让它工作一次.我试过MouseLeftButtonDownEvent- 因为似乎没有MouseClick事件,但它没有被调用.

一个更普遍的侧面问题:我怎样才能看到哪些事件确实存在,哪些处理程序与它们对应以及何时实际执行某些操作?例如,什么告诉我,MouseDoubleClickEvent我需要一个MouseButtonEventHandler?也许对于MouseLeftButtonDownEvent我需要一些其他处理程序,这就是为什么它不起作用?

我也尝试了子类化ListBoxItem和覆盖OnMouseLeftButtonDown- 但它也没有被调用.

wpf events listbox click listboxitem

33
推荐指数
4
解决办法
7万
查看次数

php-fpm for Windows?

PHP-FPM的主页http://php-fpm.org/表明它是PHP 5.3.3以来的PHP的一部分.现在,我想知道,当我从php.net下载最新的PHP二进制文件时,它没有php-fpm.我怎么得到它?它甚至适用于Windows吗?

php windows fastcgi

32
推荐指数
4
解决办法
5万
查看次数

C#:SHDocVw.WebBrowser_V1定义了什么程序集?

它被用在几个网站上,似乎都假设读者知道如何使这种类型可用,但我不知道.

示例网站,请参阅第一条评论:http: //blogs.artinsoft.net/mrojas/archive/2008/09/18/newwindow2-events-in-the-c-webbrowsercontrol.aspx

c# assemblies

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

如何在apache中托管预压缩的静态内容?

我主持一个基本上由.html和.data文件组成的JavaScript游戏.如果我用gzip压缩它们,它们的大小会缩小到25%.所以我想这样做.

我不是百分百肯定,但我认为使用mod_gzip或mod_deflate即时进行压缩,因为内容不会改变,所以总是浪费cpu时间.

所以我想预先编译内容.因此,我将.gz放在未压缩文件旁边,并将重写规则放在.htaccess中:

RewriteEngine on 
# If client accepts compressed files 
RewriteCond %{HTTP:Accept-Encoding} gzip 
# and if compressed file exists 
RewriteCond %{REQUEST_FILENAME}.gz -f 
# send .html.gz instead of .html 
RewriteRule ^(.+)\.(html|css|js|data)$ $1.$2.gz [T=text/$2,E=GZIP:gzip,L] 
Header set Content-Encoding gzip env=GZIP 
Run Code Online (Sandbox Code Playgroud)

重定向工作正常,我可以请求game.html并实际获得发送的game.html.gz. 但是,浏览器不会只显示它.相反,它会询问我保存文件的位置.我该如何解决这个问题?或者也许有另一种方法来实现我的目标?

javascript apache .htaccess mod-rewrite http-compression

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

如何告知websocket onmessage参数的类型?

这里https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent它指出属性数据类型为DOMString | Blob | ArrayBuffer.我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?

javascript blob websocket arraybuffer

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

如何在xaml中定义和使用资源,以便它们可以在C#中使用

从理论上讲,我认为我可以在xaml文件中定义画笔和颜色等,并将其分配给c#中的button.background.但是我该怎么做?我在哪里放置如下的lineargradientbrush定义:

<LinearGradientBrush x:Key="BlaBrush">
                <GradientStop Offset="0" Color="Red"/>
                <GradientStop Offset="1" Color="Green"/>
</LinearGradientBrush>
Run Code Online (Sandbox Code Playgroud)

只是将它放在我窗口的xaml文件中的不同位置会导致各种错误消息:/

我发现这里的计算器这样一个问题:如何在XAML中使用定义的画笔资源,从C#这也解释了其中的一部分,但他似乎知道在哪里做刷机的定义.

我还尝试将shinyblue.xaml wpf模板添加<ResourceDictionary Source="ShinyBlue.xaml"/>到应用程序并添加到app.xaml中的application.resources.这使我的所有按钮的蓝色瞬间,不过,在"东西"像NormalBrush shinyblue.xaml定义不是从C#访问-至少我不知道怎么办.

c# wpf resources xaml

18
推荐指数
4
解决办法
6万
查看次数

Win32:我的应用程序在用户调整窗口大小时冻结

我写了一个win32应用程序.我自己实现了这样的消息循环:

     bool programcontinue = true;
     while(programcontinue)
     {
              while (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
              {
                       TranslateMessage(&Msg);
                       DispatchMessage(&Msg);
              }

              IdleProcess();
     }
Run Code Online (Sandbox Code Playgroud)

我的应用程序中有一个可调整大小的窗口.通常,IdleProcess()每秒被调用几次.当用户抓住可调整大小窗口的角落或边缘时,在用户释放鼠标按钮之前不再调用IdleProcess().

这里发生了什么?

我尝试用if交换内部,但这不会改变行为.似乎在调整大小开始时,该消息的处理程序在调整大小完成之前不会返回?

有没有办法改变这个并在每秒调整大小几次期间调用IdleProcess()?

谢谢马克

编辑:

用if代替内部的意思是:

 bool programcontinue = true;
 while(programcontinue)
 {
          if (PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))  // <<<<
          {
                   TranslateMessage(&Msg);
                   DispatchMessage(&Msg);
          }

          IdleProcess();
 }
Run Code Online (Sandbox Code Playgroud)

我的窗口Proc有点冗长,但我用一个小测试应用程序得到了同样的行为.这与VS Project Wizard创建的wndproc相同:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse …
Run Code Online (Sandbox Code Playgroud)

winapi message loops resize freeze

8
推荐指数
2
解决办法
5887
查看次数

如何在没有延迟的情况下从Win32中的另一个进程捕获stdout?

我想做的是类似于Visual Studio在其输出窗口或其工具窗口中的其他编辑器中执行的操作:从我的进程A启动另一个进程B并捕获其stdout/stderr输出.

到目前为止,我得到了它CreatePipe(),但由于某种原因,B的输出在写入时没有到达B. 它的行为更像某种缓冲区被填满,当它已满时,所有缓冲区内容立即到达A. 我编写了自己的测试程序,输出了一些内容并fflush(stdout)直接执行了.然后输出直接到达A.但我不能改变我想用这种方式使用的所有B进程的代码.试图从A冲洗管道也不起作用.

这应该怎么样?

我的初始化代码以及使用代码:

 sa.nLength = sizeof(SECURITY_ATTRIBUTES);
 sa.bInheritHandle = TRUE;
 sa.lpSecurityDescriptor = NULL;

 err = CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &sa, stdouthistory);
 if (err == 0)
     return 1;
 err = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd,
                       GetCurrentProcess(), &hChildStdoutRdDup , 0,
                       FALSE,
                       DUPLICATE_SAME_ACCESS);
 if (err == 0)
     return 3;
 CloseHandle(hChildStdoutRd);

 DWORD a, b, c;
 a = PIPE_READMODE_BYTE | PIPE_NOWAIT;
 b = 0;
 c = 0;
 SetNamedPipeHandleState(hChildStdoutRdDup, &a, &b, &c);

 err = CreatePipe(&hChildStdinRd, &hChildStdinWr, &sa, stdinhistory);
 if (err == 0)
     return 1; …
Run Code Online (Sandbox Code Playgroud)

c++ winapi stdin stdout pipe

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

phpmyadmin显示mysql的utf8_bin校准列的数字或blob?

我有一个带varchar列的表.其排序规则设置为utf8_bin.我使用此表和列的软件完美运行.但是当我查看phpmyadmin中的内容时,我只看到一些十六进制值或[Blob xB].我可以让phpmyadmin正确显示内容吗?

此外,当我将排序规则设置为utf8_general_ci或utf8_unicode_ci时,phpmyadmin会正确显示内容.

Thx Marc

[编辑]哈哈,我发现,phpmyadmin中的每个表上方都有一个小的"+选项"链接.它打开了几个选项,包括"显示BLOB内容" - 这使得[blob]在启用时为可读文本,"将二进制内容显示为HEX",在禁用时将十六进制代码显示为文本.

不知道为什么有两个选项,为什么有时会有[Blob],有时还有十六进制值.

好.现在我还在想:当我去另一张桌子时,设置这些选项会丢失.我每次去那里都要设置它们.有没有办法保存这些选项?[/编辑]

mysql collation phpmyadmin utf-8

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

如何在使用VS2012创建的Blend 4中编辑ac#project?

它总是说"解决方案"foo.sln"格式不受支持,可能无法正确打开.你想打开解决方案吗?" 如果我单击是,它显示解决方案树,但是当我打开一个xaml文件时,它只显示其xaml文本,而不是UI的渲染.

根据这个http://blendinsider.com/technical/available-now-blend-for-visual-studio-2012-2012-08-15/ Blend 4是它的工作方式.所以我觉得有些不对劲.

我使用vs2010和Blend 4创建了较旧的项目.在vs2012中处理它们时,我仍然可以在Blend 4中打开并使用它们.只有使用vs2012创建的新项目似乎对我有这个问题.

c# wpf xaml expression-blend

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