我有一个应用程序,我有一个主窗口,可以包含其他停靠/附加的窗口.现在,当我的用户控件加载时,我使用Window.GetWindow获取其父级.这将返回对主窗口的引用,这很好.但是,当我取消/拆除用户控件所在的子窗口时,父窗口将更改.
用户控件需要监听许多父窗口事件.当父进行更改时,我找不到任何通知用户控件的方法.看起来System.Windows.Controls.UserControl不存在ParentChanged/OnParentChanged.
有什么方法可以在其父级更改时通知我的用户控件?
谢谢.
我正在构建一个MVC应用程序,并正在为一个类设计一个自定义模型绑定器; 本质上,模型的一个字段是存在于数据库中的对象,但很难将其与HTML中的相应对象相关联.(因为选择列表只允许我选择一个int/string字段,我真的不能将'object'存储为Select List的'value').
我正在考虑使用存储在选择列表中的Id来查找我的Model Binder中的数据库中的对象 - 但是我的一位同事告诉我这通常是一个坏主意.这是真的,如果是的话,我还有其他选择吗?
所以我写了一个简单的计时器类
public class ConsoleTimer : IDisposable
{
private Stopwatch _watch;
private IList _items;
public object Count = "0";
public ConsoleTimer(IList items) {
_watch = new Stopwatch();
_items = items;
_watch.Start();
}
public void Dispose() {
var c = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Green;
_watch.Stop();
TimeSpan ts = _watch.Elapsed;
Console.WriteLine(String.Format("{0} items in {1}m {2}s", _items != null ? _items.Count : Count, ts.Minutes, ts.Seconds));
Console.ForegroundColor = c;
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我接受可选的构造函数参数(IList),以便在我的计时器范围过程中该列表发生更改时,我可以自动写出添加了多少项(行/记录/实体等).
使用如下:
using (ConsoleTimer t = new ConsoleTimer(_values)) {
_values = GetValues(filter);
}
Run Code Online (Sandbox Code Playgroud)
即使_values有955项,我的计时器的Dispose方法仍然将_items看作构造函数中传递的值(无论是0还是null) …
我在后台线程解压缩文件,我在主线程上调用HomeViewController.在这个视图控制器中,我在UINavigationBar上有一个UIBarButtonItem.如果我单击此按钮,它将转到StoryViewController,并在那里使用解压缩的数据.所以我想显示主页视图控制器,虽然解压缩过程没有完成,因为我必须隐藏导航栏上的按钮,当在后台线程上解压缩时,再次完成上拉后我必须显示按钮导航栏.我正在调用homeViewController的方法来隐藏和显示..我必须在那些方法中写什么...?我的意思是如何在UINavigationBar上隐藏和显示uiBarButtonItem ....
谢谢....
我有SQL Server 2008与链接的Sybase服务器,我试图使用OPENQUERY在Sybase服务器上执行存储过程.如果我有一个不带参数的存储过程,它就会成功.如果我有一个带参数的存储过程则失败.我甚至尝试过一个非常基本的存储过程,只接受一个仍然失败的int.以下是我使用的语法:
select * from
OPENQUERY([LINKSERVER],'exec database.user.my_stored_proc ''AT'',''XXXX%'',''1111'',1')
Run Code Online (Sandbox Code Playgroud)
消息7357,级别16,状态2,行3无法处理对象"exec database.user.my_stored_proc'AT','XXXX%','1111',1".链接服务器"LINKSERVER"的OLE DB提供程序"ASEOLEDB"表示该对象没有列,或者当前用户没有该对象的权限.
由于proc将在没有参数的情况下执行得很好,我认为这不是一个权限问题.
以下代码工作正常
#include <functional>
using namespace std;
using namespace std::placeholders;
class A
{
int operator()( int i, int j ) { return i - j; }
};
A a;
auto aBind = bind( &A::operator(), ref(a), _2, _1 );
Run Code Online (Sandbox Code Playgroud)
事实并非如此
#include <functional>
using namespace std;
using namespace std::placeholders;
class A
{
int operator()( int i, int j ) { return i - j; }
int operator()( int i ) { return -i; }
};
A a;
auto aBind = bind( &A::operator(), ref(a), …Run Code Online (Sandbox Code Playgroud) 考虑一个MessageBox来提示用户回答是或否.它适用于我们的XP机器和一台Windows 7构建机器.
但是,它不适用于我们的Windows 7 Embedded机器.没有错误消息,没有MessageBox显示.它只是假设用户单击了Yes按钮,因为我可以找到从那里创建的调试文件,并且createDatabase();在没有任何messageBox之前调用它.
我可以找到MessageBox所需的程序集(System.Windows.Forms.dll).它与我们的Windows 7构建机器位于同一位置.你知道为什么吗?谢谢
DialogResult result = System.Windows.Forms.MessageBox.Show(
"Do you want to update your database?\nWarning: All your data will be erased if you click Yes !",
"Update Database",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
string[] cmdLines2 = { @"C:\AndeDB\AndeDB.db is here and selected yes" };
//it will create, open and write or overwrite
File.WriteAllLines(@"C:\Temp\dbcheck2.txt", cmdLines2);
createDatabase();
}
Run Code Online (Sandbox Code Playgroud) 这是我的代码的骨架:
if(CheckForSomething())
{
try
{
//do something
}
catch (UnauthorizedAccessException ex)
{
LogException(ex, item.server);
}
catch (Exception ex)
{
LogException(ex, item.server);
}
}
else
{
string error = "Some error";
//want to call LogException with error as argument
}
private static void LogException(Exception ex)
{
//write ex to one log file
// write ex.message to another log file
}
Run Code Online (Sandbox Code Playgroud)
如何从else块调用LogException方法?我尝试将字符串转换为异常并创建异常.
我有一个简单的HTML页面,可以旋转几个状态页面,我在校园周围的几个电视上显示.我定期更新页面和链接.很多时候页面需要身份验证.远程终端提供凭证是一种痛苦.一些是HTTP身份验证,一些是<form>基于身份验证的网站.很多时候,我可以通过<form>发布正确凭据的HTML和JavaScript来解决基于身份验证的问题.
有没有更好的方法来<form>从主机页面绕过基于身份验证?(下面)
有没有办法从主机页面绕过基于服务器/ HTTP的身份验证,而无需在显示器上手动进行身份验证?
通过<form>身份验证我的意思是一个<form>动作生成一个会话cookie?
(mikerobi,感谢评论)
这是主页的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
Important Stuff
</title>
<script src="/scripts/jquery.js" type="text/javascript"></script>
<style type="text/css">
html, body, iframe { margin:0; height:100%; }
iframe { display:block; width:100%; border:none; }
</style>
<script type="text/javascript">
var link = new Array();
link[0] = "http://mycompany.intranet/";
link[1] = "http://mycompany.intranet/weather.htm";
link[2] = "http://mycompany.intranet/systemstatus/";
var linkIndex = 0;
setInterval("doSomething()", 10000);
function doSomething() {
if (linkIndex >= …Run Code Online (Sandbox Code Playgroud) 我目前在Java程序中有以下数组,
byte[] data = new byte[800];
Run Code Online (Sandbox Code Playgroud)
我想在通过串口(115200 Baud)将其发送到微控制器之前对其进行压缩.我想在C中用微控制器解压缩数组.但是,我不太确定最好的方法是什么.性能是一个问题,因为微控制器只是一个arduino所以它不能太存储器/ CPU密集型.数据或多或少是随机的(编辑我猜它不是那么随机,请看下面的编辑)我会说因为它代表每16位的rgb颜色值.
压缩这些数据的最佳方法是什么?知道我可以得到多少压缩?
编辑
对于缺乏信息感到抱歉.我需要压缩无损,我只打算一次发送800个字节.我的问题是800字节不能以我正在使用的115200波特率快速传输.我希望我能缩小一点尺寸以提高速度.
每两个字节看起来像:
0RRRRRGGGGGBBBBB
其中RG和B位分别代表红色,绿色和蓝色的颜色通道的值.然后,每两个字节就是20x20网格上的单个LED.我会想象很多两个字节都是相同的,因为我经常为多个LED分配相同的颜色代码.也可能是这样的情况,RGB值通常> 15,因为我通常使用明亮的颜色(但是,这可能是一个没有实际意义的点,因为它们通常不是一次全部> 15).
c# ×3
.net ×2
asp.net-mvc ×1
c ×1
c++ ×1
c++11 ×1
compression ×1
embedded ×1
html ×1
iframe ×1
inheritance ×1
iphone ×1
java ×1
javascript ×1
modelbinders ×1
oop ×1
openquery ×1
show-hide ×1
sql ×1
sql-server ×1
std ×1
sybase ×1
t-sql ×1
wpf ×1
wpf-controls ×1