我希望在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- 但它也没有被调用.
渣
PHP-FPM的主页http://php-fpm.org/表明它是PHP 5.3.3以来的PHP的一部分.现在,我想知道,当我从php.net下载最新的PHP二进制文件时,它没有php-fpm.我怎么得到它?它甚至适用于Windows吗?
它被用在几个网站上,似乎都假设读者知道如何使这种类型可用,但我不知道.
示例网站,请参阅第一条评论:http: //blogs.artinsoft.net/mrojas/archive/2008/09/18/newwindow2-events-in-the-c-webbrowsercontrol.aspx
我主持一个基本上由.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. 但是,浏览器不会只显示它.相反,它会询问我保存文件的位置.我该如何解决这个问题?或者也许有另一种方法来实现我的目标?
这里https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent它指出属性数据类型为DOMString | Blob | ArrayBuffer.我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?
从理论上讲,我认为我可以在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#访问-至少我不知道怎么办.
渣
我写了一个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) 我想做的是类似于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) 我有一个带varchar列的表.其排序规则设置为utf8_bin.我使用此表和列的软件完美运行.但是当我查看phpmyadmin中的内容时,我只看到一些十六进制值或[Blob xB].我可以让phpmyadmin正确显示内容吗?
此外,当我将排序规则设置为utf8_general_ci或utf8_unicode_ci时,phpmyadmin会正确显示内容.
Thx Marc
[编辑]哈哈,我发现,phpmyadmin中的每个表上方都有一个小的"+选项"链接.它打开了几个选项,包括"显示BLOB内容" - 这使得[blob]在启用时为可读文本,"将二进制内容显示为HEX",在禁用时将十六进制代码显示为文本.
不知道为什么有两个选项,为什么有时会有[Blob],有时还有十六进制值.
好.现在我还在想:当我去另一张桌子时,设置这些选项会丢失.我每次去那里都要设置它们.有没有办法保存这些选项?[/编辑]
它总是说"解决方案"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# ×3
wpf ×3
javascript ×2
winapi ×2
xaml ×2
.htaccess ×1
apache ×1
arraybuffer ×1
assemblies ×1
blob ×1
c++ ×1
click ×1
collation ×1
events ×1
fastcgi ×1
freeze ×1
listbox ×1
listboxitem ×1
loops ×1
message ×1
mod-rewrite ×1
mysql ×1
php ×1
phpmyadmin ×1
pipe ×1
resize ×1
resources ×1
stdin ×1
stdout ×1
utf-8 ×1
websocket ×1
windows ×1