小编Ada*_*son的帖子

WinForms:使一组控件垂直缩放

我有一个Windows窗体,在以下布局中显示几个DataGridViews :(
无法访问工作中的图像托管,所以请原谅ASCII艺术......)

???????????????????????????????????????????  
???????????????????????????????????????????  
??           ??                          ??
???????????????                          ??
|??????????????                          ??
??           ??                          ??
???????????????                          ??
|??????????????                          ??
??           ??                          ??
???????????????????????????????????????????
???????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

不幸的是,当用户将表单调整为更高时,表单最终看起来像这样:

???????????????????????????????????????????  
???????????????????????????????????????????  
??           ??                          ??
???????????????                          ??
|             |                          ||
|             |                          ||
|??????????????                          ??
??           ??                          ??
???????????????                          ??
|             |                          ||
|             |                          ||
|??????????????                          ??
??           ??                          ??
???????????????????????????????????????????
???????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

而不是这个:

???????????????????????????????????????????  
???????????????????????????????????????????  
??           ??                          ??
??           ??                          ??
???????????????                          ??
|??????????????                          ??
??           ??                          ??
??           ??                          ??
???????????????                          ??
|?????????????? …
Run Code Online (Sandbox Code Playgroud)

layout winforms

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

如何将流写入内存流?

public void doprocess(TcpClient client)
{    
    MemoryStream ms = new MemoryStream();

    Stream clStream = client.GetStream();

    byte[] buffer_1 = new byte[8192];

    int count = clStream.Read(buffer_1, 0, buffer_1.Length);

    while (count > 0)
    {
        ms.Write(buffer_1, 0, count);

        //the below line doesn't gives response and code hangs here 
        count = clStream.Read(buffer_1, 0, buffer_1.Length);         
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以将一个流写入另一个流?我想用Stream两次,这就是为什么我需要把它写到MemoryStream.

.net c#

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

使用ChannelFactory <T>创建具有不同凭据的频道

我使用该ChannelFactory<T>类型在WsHttpBindingWCF Web服务中创建通道,该服务使用用户名/密码组合进行身份验证.虽然我使用自定义验证器进行身份验证,但我在创建具有不同凭据的频道时遇到了困难.

鉴于创建的开销ChannelFactory<T>,我正在尝试缓存它的单个实例并共享它,以便在我的应用程序的生命周期内创建多个通道.不幸的是,似乎凭证直接与工厂绑定,并且在创建通道后无法更改.

换句话说,如果我试试这个:

factory.Credentials.UserName.UserName = "Bob";
factory.Credentials.UserName.Password = "password";

var channel1 = factory.CreateChannel();

factory.Credentials.UserName.UserName = "Alice"; // exception here
factory.Credentials.UserName.Password = "password";

var channel1 = factory.CreateChannel();
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,告诉我该UserName属性现在是只读的.

是否有可能在这里实现任何类型的缓存,或者我基本上必须缓存ChannelFactory每个用户名的实例?

.net wcf channelfactory

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

从服务器向客户端发送浮点数

我正在使用TCP/IP套接字编程.我有一个浮点值存储在我的服务器代码中的变量ret_val中,我想发送给等待接收它的客户端.

我该怎么做?

c sockets floating-point client

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

多线程C#2.0混淆

我试图弄清楚如何多线程应用程序.我很难找到启动线程的入口点.

我尝试启动的主题是:plugin.FireOnCommand(this,newArgs);

...
PluginBase plugin = Plugins.GetPlugin(Commands.GetInternalName(command));
plugin.FireOnCommand(this, newArgs);
...
Run Code Online (Sandbox Code Playgroud)

FireOnCommand方法是:

 public void FireOnCommand(BotShell bot, CommandArgs args)
Run Code Online (Sandbox Code Playgroud)

我没有运气使用ParameterizedThreadStart或ThreadStart,我似乎无法使语法正确.

编辑:试过两个

Thread newThread = 
  new Thread(new ParameterizedThreadStart(plugin.FireOnCommand(this, newArgs))); 
Run Code Online (Sandbox Code Playgroud)

Thread newThread = 
  new Thread(new ThreadStart(plugin.FireOnCommand(this, newArgs)));
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

为什么StreamWriter不能在Windows服务中运行?

我有这个简单的代码,记录将日志附加到文本文件:

    public static void RecordToFile(string filename, Log log)
    {
            TextWriter textWriter = new StreamWriter(Constants.APP_PATH + 
                "\\" + filename, true);
            textWriter.WriteLine(log.ToString());
            textWriter.Close();
    }
Run Code Online (Sandbox Code Playgroud)

这在Windows窗体应用程序中完美运行.但是,使用instsrv和srvany技巧,我将其作为Windows服务.该服务运行正常,访问数据库,执行查询和所有...除了这个StreamWriter.日志不会得到应有的更新.有什么想法吗?

.net c# service streamwriter

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

使用表单

我正在编写一个程序,它使用2个表单,主表单和配置表单,因此当用户单击toolstripmenu-> Preferences时,将显示Preferences表单,我希望它使用户只能使用一次一个首选项表单.

我用的时候:

    Prefs preferencias = new Prefs;

    private void preferenciasToolStripMenuItem_Click(object sender, EventArgs e)   
    {
        preferencias.Show();
    }
Run Code Online (Sandbox Code Playgroud)

它工作正常,但当我关闭Preferences表单并尝试打开一个新表单时程序崩溃.

当我使用时:

    private void preferenciasToolStripMenuItem_Click(object sender, EventArgs e)   
    {
        Prefs preferencias = new Prefs;
        preferencias.Show();
    }
Run Code Online (Sandbox Code Playgroud)

用户可以拥有多个"首选项"表单.

我能做什么?

提前致谢.

.net c# winforms

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

C#BackgroundWorker - 我应该如何摆脱DoEvents

我正在试图找出处理单击按钮点击触发的后台工作人员的最佳方法.我用3个单选按钮和一个标签创建了一个非常简单的表单.每个单选按钮共享相同的事件radioButton_CheckedChanged.如果事件完成,那么我将标签更新为"完成".如果在事件完成之前单击另一个单选按钮,则将标签更新为已取消.下面是我在这个快速示例中编写的代码.尽管应用程序倾向于按预期运行,但我关注的是使用Application.DoEvents.我有什么替代方案.出于显而易见的原因,我在IsBusy时无法入睡.我是否认为这一切都错了,或者有更好的方法吗?谢谢,poco

private void radioButton_CheckedChanged(object sender, EventArgs e)
{
  RadioButton rb = sender as RadioButton;
            if (rb.Checked)
            {
                if (backgroundWorker1.IsBusy)
                {
                    backgroundWorker1.CancelAsync();
                    while (backgroundWorker1.IsBusy)
                        Application.DoEvents();
                }

                backgroundWorker1.RunWorkerAsync();
            }
        }

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            for (int i = 0; i < 100 && !worker.CancellationPending; ++i)
                Thread.Sleep(1);

            if (worker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
                label1.Text = "Canceled";
            else
                label1.Text = "Complete";
        }
Run Code Online (Sandbox Code Playgroud)

c# backgroundworker doevents

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

Java:TreeSet和LinkedList的问题

我有一个未分类的链表.为了对它进行排序,我想我会将值放入一个带有比较器的TreeSet中,然后将这些值作为新的链表返回.然而,它失败了.

比较:

public class SortSpeciesByCommonName implements Comparator<Species> {

    /**
     * a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. 
     */
    @Override
    public int compare(Species arg0, Species arg1) {
        return arg0.getName().compareTo(arg1.getName()); //arg.getName() is String
    }

}
Run Code Online (Sandbox Code Playgroud)

排序功能:

public static LinkedList<Species> sortedAnimals(LinkedList<Species> animals) {
    TreeSet<Species> sortedBreeds = new TreeSet<Species>(new SortSpeciesByCommonName());
    sortedBreeds.addAll(animals);
    return new LinkedList<Species>(sortedBreeds);
}
Run Code Online (Sandbox Code Playgroud)

测试值时,一切似乎仍处于插入顺序.

java sorting linked-list comparator treeset

0
推荐指数
1
解决办法
1474
查看次数

编写一个可怕的SQL搜索查询

我正在开发一个似乎不起作用的搜索查询.完整的查询是:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[usp_Item_Search]
    @Item_Num varchar(30) = NULL
    ,@Search_Type int = NULL
    ,@Vendor_Num varchar(10) = NULL
    ,@Search_User_ID int = NULL
    ,@StartDate smalldatetime = NULL
    ,@EndDate smalldatetime = NULL
AS
DECLARE @SQLstr as nvarchar(4000)

Set @SQLstr = 'SELECT RecID, Vendor_Num, Vendor_Name, InvoiceNum, Item_Num, 
(SELECT CONVERT(VARCHAR(11), RecDate, 106) AS [DD MON YYYY]) As RecDate, NeedsUpdate, RecAddUserID FROM [tbl_ItemLog] '

IF (@Item_Num IS NOT NULL)  
    Begin
        If @Search_Type = 0
            BEGIN
                Set @SQLstr = @SQLstr + …
Run Code Online (Sandbox Code Playgroud)

t-sql search sql-server-2005

0
推荐指数
1
解决办法
59
查看次数