我正在尝试修改使用多个表单的C#WinForms应用程序.启动时,将显示登录窗口.如果用户使用正确的用户名和密码组合登录,则具有三个不同选项卡的表单将显示为一种管理员视图.如果未提供密码或用户名,则会显示一个简化的GUI.它基本上由两个按钮组成,这两个按钮依次显示这两种形式,具体取决于按下哪个按钮:
按钮1:允许用户访问由多个文本框组成的表单,用户可以在其中输入将保存到数据库的信息.成功执行DB操作后,将再次显示带有两个按钮的第一个表单.
按钮2:显示一个表单,用户可以在其中输入将写入DB的代码.一旦数据库操作结束,用户将自动返回到具有两个按钮的原始表单.
两个表单还将有一个后退按钮,将用户带回第一个表单.我有很多逻辑,但我不确定如何最好地处理所涉及的所有形式.我应该在哪里实例化第一个(登录)表单?完成登录验证后,有两种可能的方法.显示选项卡式管理表单(如果用户名和密码正确)或带有两个大按钮的简化用户表单.还应该可以从管理表单注销,以便显示简化的GUI.
我希望我在这里有意义.我只需要一个很好的方法来处理它们之间的所有形式和导航.目前,实际上并不需要在它们之间传输数据,但是将来可能会出现问题,因此考虑到这一点的解决方案将非常出色.
我认为所需要的实际上是一个从一开始就处理表单显示和处理的类,但是我不太确定应该在哪里放置这个处理类的实例.
在过去,我使用MAPISendMail从带有文件附件的C++应用程序启动Outlook(或任何所需的MAPI电子邮件应用程序).(类似于Microsoft Word的发送电子邮件功能).
我需要在C#应用程序中执行相同的操作,并在XP,Vista,Server 2008(以及我认为的Windows 7)上运行时使其工作.
MAPISendMail在Vista/2008下是不可取的,因为它在Outlook运行时始终返回MAPI_ E_FAILURE并且托管代码中不支持MAPI.即使在检查此修复程序后:http: //support.microsoft.com/kb/939718 我无法让它可靠地工作.
我知道Microsoft Word和Adobe Reader 9都可以在Vista下使用附件启动Outlook.
AC#兼容解决方案将是首选,但我会对任何有效的(不必使用MAPI)感到满意.我似乎无法找到当前的"解决方案".Stack Overflow上现有的答案似乎也没有涵盖这一点.
编辑:
我知道MAPI和C#不能一起工作,所以当不以管理员身份运行时,我将采用在Vista和Server 2008中运行的C/C++解决方案.请参阅Adobe Reader 9和Microsoft Word作为有效的示例.
我在jsp页面中有几个radiobuttons.一旦页面加载,我运行一个javascript方法,寻找某些单选按钮并更改其名称,使它们像一个无线电组一样工作.
我这样做是因为单选按钮在jsf表中,我在编码时无法访问name属性,我希望所有的单选按钮都像一个无线电组一样工作.
无论如何,脚本运行没有问题,单选按钮的名称也正确更改.
虽然这在FF 3(像无线电组这样的工作)中有效,但它在IE 6或IE7中不起作用,尽管它们具有相同的"名称"属性.有谁知道我怎么解决这个问题?
function setRadioGroup (nombreRadio){
var listaRadios = document.getElementsByTagName('input');
var tam = listaRadios.length;
for (i = 0; i < tam; i++){
if (listaRadios[i].type == 'radio' && listaRadios[i].title == 'Seleccionar'){
listaRadios[i].name = nombreRadio;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:添加了网页的代码输出:
<form id="formulario" name="formulario" method="post"
action="/serequp/faces/administracion/articulosPv.jspx"><input
type="hidden" id="formulario:hidRegTablaArticulos"
name="formulario:hidRegTablaArticulos" value="">
<div class="dr-pnl rich-panel " id="formulario:ContFormularios">
<div class="dr-pnl-h rich-panel-header cabeceraFormulario"
id="formulario:ContFormularios_header">LISTADO DE GRUPOS DE
EQUIPAMIENTOS</div>
<div class="dr-pnl-b rich-panel-body cuerpoFormularios"
id="formulario:ContFormularios_body">
<table id="formulario:botones">
<tbody>
<tr>
<td class="estiloColumnas"><input id="formulario:j_id66"
name="formulario:j_id66"
onclick="A4J.AJAX.Submit('_viewRoot','formulario',event,{'parameters':{'formulario:j_id66':'formulario:j_id66'} ,'actionUrl':'/serequp/faces/administracion/articulosPv.jspx','similarityGroupingId':'formulario:j_id66'} );return false;" …
Run Code Online (Sandbox Code Playgroud) 我需要在(最好是文本)文件中存储和加密密码,以后我需要能够解密.密码用于我使用的其他服务,需要以明文形式(通过SSL)发送.这不是我可以改变的.这方面的最佳做法是什么?如何从恶意用户那里获得一定程度的密码保护?
我的平台是带有C#/ .NET 3.5的WinForms.
谢谢.
我有一个类似的链接
<a href="www.site.com" class="cancel">go there </a>
Run Code Online (Sandbox Code Playgroud)
然后我有一些jQuery:
$(".cancel").click(function(){
confirm("sure??");
});
Run Code Online (Sandbox Code Playgroud)
但是当我在警告框中单击取消时,它仍然会转到www.site.com而不是什么都不做.怎么解决这个?
这个简单的示例代码演示了该问题.我创建了一个ArrayBlockingQueue
和一个等待这个队列上的数据的线程take()
.循环结束后,理论上队列和线程都可以被垃圾收集,但实际上我很快就会得到一个OutOfMemoryError
.是什么阻止了这个GC,以及如何解决这个问题?
/**
* Produces out of memory exception because the thread cannot be garbage
* collected.
*/
@Test
public void checkLeak() {
int count = 0;
while (true) {
// just a simple demo, not useful code.
final ArrayBlockingQueue<Integer> abq = new ArrayBlockingQueue<Integer>(2);
final Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
abq.take();
} catch (final InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
// perform a GC …
Run Code Online (Sandbox Code Playgroud) 我在论坛上看到了这个C++代码,它最小化了所有打开的窗口
#define MIN_ALL 419
#define MIN_ALL_UNDO 416
int main(int argc, char* argv[])
{
HWND lHwnd = FindWindow("Shell_TrayWnd",NULL);
SendMessage(lHwnd,WM_COMMAND,MIN_ALL,0);
Sleep(2000);
SendMessage(lHwnd,WM_COMMAND,MIN_ALL_UNDO,0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何在C#.net中访问FindWindow和SendMessage API函数以及HWND类型?
我一直试图找到一种更加pythonic的方法来生成python中的随机字符串,它也可以扩展.通常情况下,我会看到类似的东西
''.join(random.choice(string.letters) for i in xrange(len))
Run Code Online (Sandbox Code Playgroud)
如果你想生成长字符串很糟糕.
我一直在考虑random.getrandombits一段时间,并想出如何将其转换为一个位数组,然后十六进制编码.使用python 2.6我遇到了bitarray对象,没有记录.不知何故,我让它工作,它似乎真的很快.
它在我的笔记本上生成一个50mil的随机字符串,仅需3秒钟.
def rand1(leng):
nbits = leng * 6 + 1
bits = random.getrandbits(nbits)
uc = u"%0x" % bits
newlen = int(len(uc) / 2) * 2 # we have to make the string an even length
ba = bytearray.fromhex(uc[:newlen])
return base64.urlsafe_b64encode(str(ba))[:leng]
Run Code Online (Sandbox Code Playgroud)
编辑
heikogerlach指出,造成这个问题的人数奇怪.添加了新代码以确保始终从偶数个十六进制数字发送.
仍然很好奇,如果有更好的方法做到这一点同样快.
我希望能够在Mac OS X下获得无线接口的速度.我有一个perl脚本可以获取无线网卡的其他信息,但我仍然需要获得连接速度.
目前我已经静态设置机场速度:$ airport_rate ="54"; (见下面的代码).
我可以使用什么命令来获取内置机场卡的速度或我在下面的代码中遗漏的内容.谢谢
编辑:此代码现在有效.谢谢. 脚本的示例输出:
Run Code Online (Sandbox Code Playgroud)ETHERNET IP : 192.168.2.7 AIRPORT IP : 192.168.2.4 AIRPORT STATUS : CONNECTED SSID : Forcefield RATE : 54 Mb/s
#!/usr/bin/perl
# a little script to get your network status
$en0_info = `ifconfig en0 | grep "inet" | grep -v 127.0.0.1`;
$en1_info = `ifconfig en1 | grep "inet" | grep -v 127.0.0.1`;
$airport_info = `/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I`;
if($en0_info)
{
$en0_info =~ /inet (.*) netmask/s;
$output .= "ETHERNET IP : $1\n";
}
else …
Run Code Online (Sandbox Code Playgroud) 我想使用os.system("md5sum myFile")
并从os.system返回结果,而不是在子回显中运行它.
总之,我想这样做:
resultMD5 = os.system("md5sum myFile")
Run Code Online (Sandbox Code Playgroud)
并且只有resultMD5中的md5sum而没有回显.
c# ×4
.net ×2
python ×2
architecture ×1
c++ ×1
email ×1
encryption ×1
html ×1
java ×1
javascript ×1
jquery ×1
jsf ×1
macos ×1
mapi ×1
minimize ×1
networking ×1
outlook ×1
perl ×1
python-2.6 ×1
random ×1
window ×1
winforms ×1