- PR -

「名前を付けて保存」ダイアログボックス

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/11/24
投稿数: 25
投稿日時: 2006-11-01 15:59
Winアプリケーションです

Dim sfd As New SaveFileDialog

「名前を付けて保存」ダイアログボックスで、
キャンセルボタンを表示しないように もしくは ボタンを非表示に
したいのですが、できるでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-11-01 16:22
たぶん出来ないと思います。
どんな動きをさせようとしていますか?
未記入
常連さん
会議室デビュー日: 2004/11/24
投稿数: 25
投稿日時: 2006-11-01 16:26
ファイルを
指定されたフォルダとファイル名で必ず保存してほしいのです。

キャンセルはエラーにしたい。

できますか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-11-01 16:33
引用:

未記入さんの書き込み (2006-11-01 16:26) より:
ファイルを
指定されたフォルダとファイル名で必ず保存してほしいのです。

キャンセルはエラーにしたい。


???
指定したフォルダに必ず保存するなら SaveFileDialog は必要ですか?
どこどこに保存しましたとか、しますとかいうガイダンスを出しておけばいいのでは。
_________________
かるあ のメモスニペット
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2006-11-01 16:34
#開発環境くらい書きましょう
#以前も指摘されてますよね

無理だと思いますし,仮にできたとしてもそんなインターフェースは
何かと問題がある気がします
_________________
# Future Is On Fire !
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-11-01 16:49
良し悪しはおいといて
Win32APIとスレッドを使って無理やり非表示にすることは出来なくもないです。
以下はC#でのコードです。

コード:
public class Win32API
{
    [DllImport("User32.dll", CharSet = CharSet.Unicode)]
    public static extern IntPtr FindWindow(string lpszClass, string lpszWindow);
    [DllImport("User32.dll")]
    public static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
    public const int IDCANCEL = 2;
    [DllImport("User32.dll")]
    public static extern int ShowWindow(IntPtr hWnd, int nCmdShow);
    public const int SW_HIDE = 0;
    [ DllImport("USER32.DLL") ]
    public static extern IntPtr GetSystemMenu(IntPtr hWnd, int bRevert);
    [ DllImport("USER32.DLL") ]
    public static extern UInt32 RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
    public const uint SC_CLOSE = 0x0000F060;
    public const uint MF_BYCOMMAND = 0x00000000;
}

public class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Thread t = new Thread(new ThreadStart(func));
        t.Start();
        this.saveFileDialog1.ShowDialog();
    }

    private static void func()
    {
        IntPtr hWnd;
        IntPtr hButton;
        IntPtr hMenu;
        
        do
        {
            hWnd = Win32API.FindWindow(null, "名前を付けて保存");
        } while (hWnd == IntPtr.Zero);
        hButton = Win32API.GetDlgItem(hWnd, Win32API.IDCANCEL);
        if (hButton != IntPtr.Zero)
        {
            Win32API.ShowWindow(hButton, Win32API.SW_HIDE);
        }
        hMenu = Win32API.GetSystemMenu(hWnd, 0);
        Win32API.RemoveMenu(hMenu, Win32API.SC_CLOSE, Win32API.MF_BYCOMMAND);
    }
}



参考
[@IT]タイトル・バーの[閉じる]ボタンのみを無効にするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/142closebtn/closebtn.html
類似(?)スレ
VC++でフォルダ参照ダイアログの出現位置変更の仕方
http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi?print+200609/06090001.txt
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-11-01 16:57
ループして再表示なんてのじゃ駄目ですか。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-11-01 17:06
保存ダイアログは、保存する場所を選ぶだけで保存まではしてくれませんよ。
逆に言えば保存する場所が決まっているならダイアログは不要です。

スキルアップ/キャリアアップ(JOB@IT)